Open
Description
This is a follow-up of #124535 (comment).
TLDR: it looks like #124535 might have not been completely resolved, or at least there are some undetected edge cases in c4c7859...
Issue Description
In the minimal reproduction (rami3l/repro_rust_124535), we have:
// lib.rs
macro_rules! pm_mods {
( $( $vis:vis $mod:ident; )+ ) => {
$(
$vis mod $mod;
pub use self::$mod::$mod;
)+
}
}
pm_mods! {
dnf;
}
// dnf.rs
#![doc = doc_self!()]
macro_rules! doc_self {
() => {
"The Dandified YUM."
};
}
use doc_self; // <- Please note that the suggested fix has already been applied.
#[doc = doc_self!()]
pub fn dnf() {}
I expected to see this happen: ✅
Instead, this happened:
> cargo check
Checking repro_rust_124535 v0.1.0 (/path/censored)
warning: cannot find macro `doc_self` in this scope
--> src/dnf.rs:1:10
|
1 | #![doc = doc_self!()]
| ^^^^^^^^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #124535 <https://github.com/rust-lang/rust/issues/124535>
= help: import `macro_rules` with `use` to make it callable above its definition
= note: `#[warn(out_of_scope_macro_calls)]` on by default
warning: `repro_rust_124535` (lib) generated 1 warning
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.06s
Also, it's worth noticing that after inlining the macro invocation in lib.rs
, i.e.:
// lib.rs
mod dnf;
pub use self::dnf::dnf;
... the error seems gone.
Meta
rustc --version --verbose
:
rustc 1.83.0 (90b35a623 2024-11-26)
binary: rustc
commit-hash: 90b35a6239c3d8bdabc530a6a0816f7ff89a0aaf
commit-date: 2024-11-26
host: aarch64-apple-darwin
release: 1.83.0
LLVM version: 19.1.1