From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- src/test/ui/proc-macro/derive-helper-shadowing.rs | 56 +++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/test/ui/proc-macro/derive-helper-shadowing.rs (limited to 'src/test/ui/proc-macro/derive-helper-shadowing.rs') diff --git a/src/test/ui/proc-macro/derive-helper-shadowing.rs b/src/test/ui/proc-macro/derive-helper-shadowing.rs new file mode 100644 index 000000000..80d982d25 --- /dev/null +++ b/src/test/ui/proc-macro/derive-helper-shadowing.rs @@ -0,0 +1,56 @@ +// edition:2018 +// aux-build:test-macros.rs +// aux-build:derive-helper-shadowing.rs + +#[macro_use] +extern crate test_macros; +#[macro_use] +extern crate derive_helper_shadowing; + +use test_macros::empty_attr as empty_helper; + +macro_rules! gen_helper_use { + () => { + #[empty_helper] //~ ERROR cannot find attribute `empty_helper` in this scope + struct W; + } +} + +#[empty_helper] //~ ERROR `empty_helper` is ambiguous + //~| WARN derive helper attribute is used before it is introduced + //~| WARN this was previously accepted +#[derive(Empty)] +struct S { + #[empty_helper] // OK, no ambiguity, derive helpers have highest priority + field: [u8; { + use empty_helper; //~ ERROR `empty_helper` is ambiguous + + #[empty_helper] // OK, no ambiguity, derive helpers have highest priority + struct U; + + mod inner { + // OK, no ambiguity, the non-helper attribute is not in scope here, only the helper. + #[empty_helper] + struct V; + + gen_helper_use!(); + + #[derive(GenHelperUse)] //~ ERROR cannot find attribute `empty_helper` in this scope + struct Owo; + + use empty_helper as renamed; + #[renamed] //~ ERROR cannot use a derive helper attribute through an import + struct Wow; + } + + 0 + }] +} + +// OK, no ambiguity, only the non-helper attribute is in scope. +#[empty_helper] +struct Z; + +fn main() { + let s = S { field: [] }; +} -- cgit v1.2.3