From 30c2e26506eb672386c70ea2e4d7e0b102f86d2d Mon Sep 17 00:00:00 2001 From: Jane Losare-Lusby Date: Fri, 21 Nov 2025 14:08:33 -0800 Subject: [PATCH 1/2] Add test for derive helper compat collisions --- .../auxiliary/extra-empty-derive.rs | 7 ++++++ .../helper-attr-compat-collision.rs | 23 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 tests/ui/proc-macro/auxiliary/extra-empty-derive.rs create mode 100644 tests/ui/proc-macro/helper-attr-compat-collision.rs diff --git a/tests/ui/proc-macro/auxiliary/extra-empty-derive.rs b/tests/ui/proc-macro/auxiliary/extra-empty-derive.rs new file mode 100644 index 0000000000000..9a89e04364d75 --- /dev/null +++ b/tests/ui/proc-macro/auxiliary/extra-empty-derive.rs @@ -0,0 +1,7 @@ +extern crate proc_macro; +use proc_macro::{TokenStream, TokenTree}; + +#[proc_macro_derive(Empty2, attributes(empty_helper))] +pub fn empty_derive2(_: TokenStream) -> TokenStream { + TokenStream::new() +} diff --git a/tests/ui/proc-macro/helper-attr-compat-collision.rs b/tests/ui/proc-macro/helper-attr-compat-collision.rs new file mode 100644 index 0000000000000..1ed2f4c550663 --- /dev/null +++ b/tests/ui/proc-macro/helper-attr-compat-collision.rs @@ -0,0 +1,23 @@ +//@ proc-macro: test-macros.rs +//@ proc-macro: extra-empty-derive.rs +//@ build-pass + +#[macro_use(Empty)] +extern crate test_macros; +#[macro_use(Empty2)] +extern crate extra_empty_derive; + +// Testing the behavior of derive attributes with helpers that share the same name. +// +// Normally if the first derive below were absent the call to #[empty_helper] before it it +// introduced by its own derive would produce a future incompat error. +// +// With the extra derive also introducing that attribute in advanced the warning gets supressed. +// Demonstrates a lack of identity to helper attributes, the compiler does not track which derive +// introduced a helper, just that a derive introduced the helper. +#[derive(Empty)] +#[empty_helper] +#[derive(Empty2)] +struct S; + +fn main() {} From 7537b0bc068b021fb852e8df92c3476b61527e15 Mon Sep 17 00:00:00 2001 From: Jane Losare-Lusby Date: Mon, 24 Nov 2025 10:41:28 -0800 Subject: [PATCH 2/2] Update tests/ui/proc-macro/helper-attr-compat-collision.rs Co-authored-by: Vadim Petrochenkov --- tests/ui/proc-macro/helper-attr-compat-collision.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ui/proc-macro/helper-attr-compat-collision.rs b/tests/ui/proc-macro/helper-attr-compat-collision.rs index 1ed2f4c550663..7755582c46322 100644 --- a/tests/ui/proc-macro/helper-attr-compat-collision.rs +++ b/tests/ui/proc-macro/helper-attr-compat-collision.rs @@ -1,6 +1,6 @@ //@ proc-macro: test-macros.rs //@ proc-macro: extra-empty-derive.rs -//@ build-pass +//@ check-pass #[macro_use(Empty)] extern crate test_macros;