@@ -27,10 +27,8 @@ use rustc_span::symbol::{kw, sym, Ident, Symbol};
27
27
use rustc_span:: { BytePos , Span , SyntaxContext } ;
28
28
use thin_vec:: { thin_vec, ThinVec } ;
29
29
30
- use crate :: errors:: {
31
- AddedMacroUse , ChangeImportBinding , ChangeImportBindingSuggestion , ConsiderAddingADerive ,
32
- ExplicitUnsafeTraits ,
33
- } ;
30
+ use crate :: errors:: { AddedMacroUse , ChangeImportBinding , ChangeImportBindingSuggestion } ;
31
+ use crate :: errors:: { ConsiderAddingADerive , ExplicitUnsafeTraits , MaybeMissingMacroRulesName } ;
34
32
use crate :: imports:: { Import , ImportKind } ;
35
33
use crate :: late:: { PatternSource , Rib } ;
36
34
use crate :: path_names_to_string;
@@ -1421,14 +1419,21 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
1421
1419
"" ,
1422
1420
) ;
1423
1421
1422
+ if macro_kind == MacroKind :: Bang && ident. name == sym:: macro_rules {
1423
+ err. subdiagnostic ( MaybeMissingMacroRulesName { span : ident. span } ) ;
1424
+ return ;
1425
+ }
1426
+
1424
1427
if macro_kind == MacroKind :: Derive && ( ident. name == sym:: Send || ident. name == sym:: Sync ) {
1425
1428
err. subdiagnostic ( ExplicitUnsafeTraits { span : ident. span , ident } ) ;
1426
1429
return ;
1427
1430
}
1431
+
1428
1432
if self . macro_names . contains ( & ident. normalize_to_macros_2_0 ( ) ) {
1429
1433
err. subdiagnostic ( AddedMacroUse ) ;
1430
1434
return ;
1431
1435
}
1436
+
1432
1437
if ident. name == kw:: Default
1433
1438
&& let ModuleKind :: Def ( DefKind :: Enum , def_id, _) = parent_scope. module . kind
1434
1439
{
0 commit comments