@@ -12,7 +12,8 @@ use thin_vec::{ThinVec, thin_vec};
1212use crate :: errors:: {
1313 EiiExternTargetExpectedList , EiiExternTargetExpectedMacro , EiiExternTargetExpectedUnsafe ,
1414 EiiMacroExpectedMaxOneArgument , EiiOnlyOnce , EiiSharedMacroInStatementPosition ,
15- EiiSharedMacroTarget , EiiStaticArgumentRequired , EiiStaticDefault , EiiStaticMutable ,
15+ EiiSharedMacroTarget , EiiStaticArgumentRequired , EiiStaticDefault ,
16+ EiiStaticMultipleImplementations , EiiStaticMutable ,
1617} ;
1718
1819/// ```rust
@@ -512,7 +513,14 @@ pub(crate) fn eii_shared_macro(
512513
513514 let eii_impls = match & mut i. kind {
514515 ItemKind :: Fn ( func) => & mut func. eii_impls ,
515- ItemKind :: Static ( stat) => & mut stat. eii_impls ,
516+ ItemKind :: Static ( stat) => {
517+ if !stat. eii_impls . is_empty ( ) {
518+ // Reject multiple implementations on one static item
519+ // because it might be unintuitive for libraries defining statics the defined statics may alias
520+ ecx. dcx ( ) . emit_err ( EiiStaticMultipleImplementations { span } ) ;
521+ }
522+ & mut stat. eii_impls
523+ }
516524 _ => {
517525 ecx. dcx ( )
518526 . emit_err ( EiiSharedMacroTarget { span, name : path_to_string ( & meta_item. path ) } ) ;
0 commit comments