-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build error with extern crates after upgrading to 2018 edition #56398
Comments
Duplicate of #56326 |
@petrochenkov This issue seems a little different because it does not involve edition idioms or migration lints. A smaller example, assume you are writing new code in 2018 from scratch:
The error message (as shown above) on current beta is somewhat confusing. If you're not aware that Perhaps the fix for this and #56326 is the same, but that issue is currently marked as an idiom lint, but this affects "normal" code. |
Ultimately, the fix to both issues is to stabilize uniform paths (#56417), so that the feature gate error is no longer reported. |
Stabilize `uniform_paths` Address all the things described in #56417. Assign visibilities to `macro_rules` items - `pub` to `macro_export`-ed macros and `pub(crate)` to non-exported macros, these visibilities determine how far these macros can be reexported with `use`. Prohibit use of reexported inert attributes and "tool modules", after renaming (e.g. `use inline as imported_inline`) their respective tools and even compiler passes won't be able to recognize and properly check them. Also turn use of uniform paths in 2015 macros into an error, I'd prefer to neither remove nor stabilize them right away because I still want to make some experiments in this area (uniform path fallback was added to 2015 macros used on 2018 edition in #56053 (comment)). UPDATE: The last commit also stabilizes the feature `uniform_paths`. Closes #53130 Closes #55618 Closes #56326 Closes #56398 Closes #56417 Closes #56821 Closes #57252 Closes #57422
Stabilize `uniform_paths` Address all the things described in #56417. Assign visibilities to `macro_rules` items - `pub` to `macro_export`-ed macros and `pub(crate)` to non-exported macros, these visibilities determine how far these macros can be reexported with `use`. Prohibit use of reexported inert attributes and "tool modules", after renaming (e.g. `use inline as imported_inline`) their respective tools and even compiler passes won't be able to recognize and properly check them. Also turn use of uniform paths in 2015 macros into an error, I'd prefer to neither remove nor stabilize them right away because I still want to make some experiments in this area (uniform path fallback was added to 2015 macros used on 2018 edition in #56053 (comment)). UPDATE: The last commit also stabilizes the feature `uniform_paths`. Closes #53130 Closes #55618 Closes #56326 Closes #56398 Closes #56417 Closes #56821 Closes #57252 Closes #57422
I took my project here and converted it to the 2018 edition: https://github.com/elliottslaughter/integrity-checker
The flow I used was:
But even though
cargo fix
completes without warnings, the build is giving me:For posterity I've saved the result of having applied cargo fix here:
https://github.com/elliottslaughter/integrity-checker/tree/rust-2018
The text was updated successfully, but these errors were encountered: