Commit e3b8efe
committed
Use local_inner_macros to resolve all helper macros within $crate
This fixes the following error when using Rust 2018 style macro imports.
extern crate lazy_static;
use lazy_static::lazy_static;
error: cannot find macro `__lazy_static_internal!` in this scope
--> src/main.rs:8:1
|
8 | / lazy_static! {
9 | | static ref M: HashMap<String, String> = HashMap::new();
10 | | }
| |_^
|
The `local_inner_macros` modifier resolves all macro invocations made
from within that macro as helpers in the same crate. So if
`lazy_static!` expands to an invocation of `__lazy_static_internal!`
then this would be resolved as `$crate::__lazy_static_internal!` rather
than requiring the caller to have `__lazy_static_internal` in scope.
The attribute is ignored by pre-2018 compilers so lazy_static will
continue to work as normal with #[macro_use].
In the future when dropping compatibility with pre-2018 compilers we can
remove the `local_inner_macros` modifier and use our own explicit
`$crate::` prefixes on invocations of helper macros.1 parent bc51ed6 commit e3b8efe
1 file changed
+2
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
123 | 123 | | |
124 | 124 | | |
125 | 125 | | |
126 | | - | |
| 126 | + | |
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
| |||
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
173 | | - | |
| 173 | + | |
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
| |||
0 commit comments