Fully qualify crate paths in BevyManifest
#18938
Merged
+1
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Objective
Subtle, very minor issue. The following code fails to compile on main:
The derive proc macro is pasting in essentially:
...which normally works, but I've added
struct bevy
, which makes the proc macro spit out incorrect code.Very cursed, but to my knowledge has never been encountered in practice. All the same, it's technically incorrect and should be fixed.
Solution
The solution is simply to prepend
::
to crate names. Specifically, all (all?) Bevy's derive macros determine the root crate name usingBevyManifest
, which does some toml-parsing witchcraft to figure out whether to qualify names using the umbrellabevy
crate or individualbevy_xxx
crates. I just added a::
to the spot where we parse thesyn::Path
. The above example compiles properly after that.Testing
Note
If this does break something for someone, this really needs a comment in
BevyManifest::maybe_get_path
explaining why we can't make this change.