- Notifications
You must be signed in to change notification settings - Fork 14.1k
Closed
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsD-confusingDiagnostics: Confusing error or lint that should be reworked.Diagnostics: Confusing error or lint that should be reworked.D-incorrectDiagnostics: A diagnostic that is giving misleading or incorrect information.Diagnostics: A diagnostic that is giving misleading or incorrect information.D-invalid-suggestionDiagnostics: A structured suggestion resulting in incorrect code.Diagnostics: A structured suggestion resulting in incorrect code.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Given the following code: [playground]
mod m { #[macro_export] macro_rules! nu { {} => {}; } #[allow(nonstandard_style)] pub struct other_item; pub use self::{nu, other_item as _}; }The current output is:
error[[E0432]](https://doc.rust-lang.org/nightly/error-index.html#E0432): unresolved import `self::nu` --> src/lib.rs:10:20 | 10 | pub use self::{nu, other_item as _}; | ^^ no `nu` in `m` | = note: this could be because a macro annotated with `#[macro_export]` will be exported at the root of the crate instead of the module where it is defined help: a macro with this name exists at the root of the crate | 10 - pub use self::{nu, other_item as _}; 10 + pub use self::{nu, other_item as _}; | If the starting order is reversed, the suggestion puts the macro first in the tree
error[[E0432]](https://doc.rust-lang.org/nightly/error-index.html#E0432): unresolved import `self::nu` --> src/lib.rs:10:37 | 10 | pub use self::{other_item as _, nu}; | ^^ no `nu` in `m` | = note: this could be because a macro annotated with `#[macro_export]` will be exported at the root of the crate instead of the module where it is defined help: a macro with this name exists at the root of the crate | 10 - pub use self::{other_item as _, nu}; 10 + pub use self::{nu, other_item as _}; | This is suggesting to change the code to itself 🙃 It needs to move the import into a use crate:: tree; the easy way is to make a new use statement (and let rustfmt clean that up); the medium way is to find an existing use crate:: context; the hard way is when a use crate:: tree root doesn't already exist (or isn't immediately a tree at that point) determine what import granularity the code is using and match that.
Related: #99694
@rustbot label +D-confusing +D-incorrect
Metadata
Metadata
Assignees
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsD-confusingDiagnostics: Confusing error or lint that should be reworked.Diagnostics: Confusing error or lint that should be reworked.D-incorrectDiagnostics: A diagnostic that is giving misleading or incorrect information.Diagnostics: A diagnostic that is giving misleading or incorrect information.D-invalid-suggestionDiagnostics: A structured suggestion resulting in incorrect code.Diagnostics: A structured suggestion resulting in incorrect code.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.