expand: Resolve and expand inner attributes on out-of-line modules
This commit is contained in:
parent
84c08f82b4
commit
a4cc3cae04
12 changed files with 230 additions and 32 deletions
|
|
@ -0,0 +1,7 @@
|
|||
// check-pass
|
||||
|
||||
mod module_with_cfg;
|
||||
|
||||
mod module_with_cfg {} // Ok, the module above is configured away by an inner attribute.
|
||||
|
||||
fn main() {}
|
||||
3
src/test/ui/conditional-compilation/module_with_cfg.rs
Normal file
3
src/test/ui/conditional-compilation/module_with_cfg.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
// ignore-test
|
||||
|
||||
#![cfg_attr(all(), cfg(FALSE))]
|
||||
18
src/test/ui/proc-macro/inner-attr-non-inline-mod.rs
Normal file
18
src/test/ui/proc-macro/inner-attr-non-inline-mod.rs
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// compile-flags: -Z span-debug
|
||||
// error-pattern:custom inner attributes are unstable
|
||||
// error-pattern:inner macro attributes are unstable
|
||||
// error-pattern:this was previously accepted
|
||||
// aux-build:test-macros.rs
|
||||
|
||||
#![no_std] // Don't load unnecessary hygiene information from std
|
||||
extern crate std;
|
||||
|
||||
#[macro_use]
|
||||
extern crate test_macros;
|
||||
|
||||
#[deny(unused_attributes)]
|
||||
mod module_with_attrs;
|
||||
//~^ ERROR non-inline modules in proc macro input are unstable
|
||||
//~| ERROR custom inner attributes are unstable
|
||||
|
||||
fn main() {}
|
||||
40
src/test/ui/proc-macro/inner-attr-non-inline-mod.stderr
Normal file
40
src/test/ui/proc-macro/inner-attr-non-inline-mod.stderr
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
error[E0658]: inner macro attributes are unstable
|
||||
--> $DIR/module_with_attrs.rs:4:4
|
||||
|
|
||||
LL | #![print_attr]
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #54726 <https://github.com/rust-lang/rust/issues/54726> for more information
|
||||
= help: add `#![feature(custom_inner_attributes)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: non-inline modules in proc macro input are unstable
|
||||
--> $DIR/inner-attr-non-inline-mod.rs:14:1
|
||||
|
|
||||
LL | mod module_with_attrs;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #54727 <https://github.com/rust-lang/rust/issues/54727> for more information
|
||||
= help: add `#![feature(proc_macro_hygiene)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: custom inner attributes are unstable
|
||||
--> $DIR/inner-attr-non-inline-mod.rs:14:1
|
||||
|
|
||||
LL | mod module_with_attrs;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #54726 <https://github.com/rust-lang/rust/issues/54726> for more information
|
||||
= help: add `#![feature(custom_inner_attributes)]` to the crate attributes to enable
|
||||
|
||||
error: custom inner attributes are unstable
|
||||
--> $DIR/module_with_attrs.rs:3:4
|
||||
|
|
||||
LL | #![rustfmt::skip]
|
||||
| ^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `#[deny(soft_unstable)]` on by default
|
||||
= 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 #64266 <https://github.com/rust-lang/rust/issues/64266>
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
76
src/test/ui/proc-macro/inner-attr-non-inline-mod.stdout
Normal file
76
src/test/ui/proc-macro/inner-attr-non-inline-mod.stdout
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
PRINT-ATTR INPUT (DISPLAY): #[deny(unused_attributes)] mod module_with_attrs { # ! [rustfmt :: skip] }
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
spacing: Alone,
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
Group {
|
||||
delimiter: Bracket,
|
||||
stream: TokenStream [
|
||||
Ident {
|
||||
ident: "deny",
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
Group {
|
||||
delimiter: Parenthesis,
|
||||
stream: TokenStream [
|
||||
Ident {
|
||||
ident: "unused_attributes",
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
],
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
],
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
Ident {
|
||||
ident: "mod",
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
Ident {
|
||||
ident: "module_with_attrs",
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
Group {
|
||||
delimiter: Brace,
|
||||
stream: TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
spacing: Joint,
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
Punct {
|
||||
ch: '!',
|
||||
spacing: Alone,
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
Group {
|
||||
delimiter: Bracket,
|
||||
stream: TokenStream [
|
||||
Ident {
|
||||
ident: "rustfmt",
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
Punct {
|
||||
ch: ':',
|
||||
spacing: Joint,
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
Punct {
|
||||
ch: ':',
|
||||
spacing: Alone,
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
Ident {
|
||||
ident: "skip",
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
],
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
],
|
||||
span: $DIR/inner-attr-non-inline-mod.rs:14:1: 14:23 (#0),
|
||||
},
|
||||
]
|
||||
4
src/test/ui/proc-macro/module_with_attrs.rs
Normal file
4
src/test/ui/proc-macro/module_with_attrs.rs
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
// ignore-test
|
||||
|
||||
#![rustfmt::skip]
|
||||
#![print_attr]
|
||||
Loading…
Add table
Add a link
Reference in a new issue