From 2d38ea2ef41c143b0df81cca822f5660085e2329 Mon Sep 17 00:00:00 2001 From: Martin Nordholts Date: Fri, 2 Jan 2026 12:52:40 +0100 Subject: [PATCH] compiler: Make Externally Implementable Items (eii) in std build --- compiler/rustc_builtin_macros/src/eii.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/compiler/rustc_builtin_macros/src/eii.rs b/compiler/rustc_builtin_macros/src/eii.rs index 9049639925ddb..7668745fa0662 100644 --- a/compiler/rustc_builtin_macros/src/eii.rs +++ b/compiler/rustc_builtin_macros/src/eii.rs @@ -134,6 +134,7 @@ fn eii_( foreign_item_name, impl_unsafe, decl_span, + &attrs_from_decl, ))); return_items.into_iter().map(wrap_item).collect() @@ -353,9 +354,22 @@ fn generate_attribute_macro_to_implement( foreign_item_name: Ident, impl_unsafe: bool, decl_span: Span, + attrs_from_decl: &[Attribute], ) -> ast::Item { let mut macro_attrs = ThinVec::new(); + // To avoid e.g. `error: attribute macro has missing stability attribute` + // errors for eii's in std. + macro_attrs.extend_from_slice(attrs_from_decl); + + // Needed to avoid lots of unrelated "missing stability attribute" errors on + // unrelated items. + macro_attrs.push(ecx.attr_name_value_str( + sym::rustc_macro_transparency, + sym::transparent, + span, + )); + // #[builtin_macro(eii_shared_macro)] macro_attrs.push(ecx.attr_nested_word(sym::rustc_builtin_macro, sym::eii_shared_macro, span));