diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2020-12-31 17:59:09 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2021-01-09 18:43:01 +0300 |
| commit | d81c1946c6a6328a26cef3baf6cf59226d449b11 (patch) | |
| tree | 0f1577ad8b5cd5eb531c247d5a17a8b82aeee507 /src | |
| parent | 46c35c76fedb90b547201d111e6423bb1de78cd6 (diff) | |
resolve/expand: Improve attribute expansion on macro definitions and calls
Diffstat (limited to 'src')
4 files changed, 35 insertions, 12 deletions
diff --git a/src/test/ui/attributes/key-value-expansion-on-mac.rs b/src/test/ui/attributes/key-value-expansion-on-mac.rs new file mode 100644 index 00000000000..1247ff2b230 --- /dev/null +++ b/src/test/ui/attributes/key-value-expansion-on-mac.rs @@ -0,0 +1,15 @@ +#![feature(extended_key_value_attributes)] +#![feature(rustc_attrs)] + +#[rustc_dummy = stringify!(a)] // OK +macro_rules! bar { + () => {}; +} + +// FIXME?: `bar` here expands before `stringify` has a chance to expand. +// `#[rustc_dummy = ...]` is validated and dropped during expansion of `bar`, +// the "unexpected token" errors comes from the validation. +#[rustc_dummy = stringify!(b)] //~ ERROR unexpected token: `stringify!(b)` +bar!(); + +fn main() {} diff --git a/src/test/ui/attributes/key-value-expansion-on-mac.stderr b/src/test/ui/attributes/key-value-expansion-on-mac.stderr new file mode 100644 index 00000000000..b74f3518a7e --- /dev/null +++ b/src/test/ui/attributes/key-value-expansion-on-mac.stderr @@ -0,0 +1,8 @@ +error: unexpected token: `stringify!(b)` + --> $DIR/key-value-expansion-on-mac.rs:12:17 + | +LL | #[rustc_dummy = stringify!(b)] + | ^^^^^^^^^^^^^ + +error: aborting due to previous error + diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr b/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr index ef9c9ef48a8..128795f50f9 100644 --- a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr +++ b/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr @@ -173,12 +173,6 @@ LL | #[deny(x5100)] impl S { } | ^^^^^ warning: `#[macro_escape]` is a deprecated synonym for `#[macro_use]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:438:1 - | -LL | #[macro_escape] - | ^^^^^^^^^^^^^^^ - -warning: `#[macro_escape]` is a deprecated synonym for `#[macro_use]` --> $DIR/issue-43106-gating-of-builtin-attrs.rs:441:17 | LL | mod inner { #![macro_escape] } @@ -186,6 +180,12 @@ LL | mod inner { #![macro_escape] } | = help: try an outer attribute: `#[macro_use]` +warning: `#[macro_escape]` is a deprecated synonym for `#[macro_use]` + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:438:1 + | +LL | #[macro_escape] + | ^^^^^^^^^^^^^^^ + warning: use of deprecated attribute `plugin_registrar`: compiler plugins are deprecated. See https://github.com/rust-lang/rust/pull/64675 --> $DIR/issue-43106-gating-of-builtin-attrs.rs:228:17 | diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-macro_use.stderr b/src/test/ui/feature-gates/issue-43106-gating-of-macro_use.stderr index 52a682e4bfa..7f6d608038f 100644 --- a/src/test/ui/feature-gates/issue-43106-gating-of-macro_use.stderr +++ b/src/test/ui/feature-gates/issue-43106-gating-of-macro_use.stderr @@ -1,8 +1,8 @@ error: arguments to `macro_use` are not allowed here - --> $DIR/issue-43106-gating-of-macro_use.rs:6:1 + --> $DIR/issue-43106-gating-of-macro_use.rs:12:17 | -LL | #![macro_use(my_macro)] - | ^^^^^^^^^^^^^^^^^^^^^^^ +LL | mod inner { #![macro_use(my_macro)] } + | ^^^^^^^^^^^^^^^^^^^^^^^ error: arguments to `macro_use` are not allowed here --> $DIR/issue-43106-gating-of-macro_use.rs:9:1 @@ -11,10 +11,10 @@ LL | #[macro_use(my_macro)] | ^^^^^^^^^^^^^^^^^^^^^^ error: arguments to `macro_use` are not allowed here - --> $DIR/issue-43106-gating-of-macro_use.rs:12:17 + --> $DIR/issue-43106-gating-of-macro_use.rs:6:1 | -LL | mod inner { #![macro_use(my_macro)] } - | ^^^^^^^^^^^^^^^^^^^^^^^ +LL | #![macro_use(my_macro)] + | ^^^^^^^^^^^^^^^^^^^^^^^ error: malformed `macro_use` attribute input --> $DIR/issue-43106-gating-of-macro_use.rs:15:5 |
