@@ -3,7 +3,7 @@ use Namespace::*;
3
3
use rustc_ast:: { self as ast, NodeId } ;
4
4
use rustc_errors:: ErrorGuaranteed ;
5
5
use rustc_hir:: def:: { DefKind , MacroKinds , Namespace , NonMacroAttrKind , PartialRes , PerNS } ;
6
- use rustc_middle:: bug;
6
+ use rustc_middle:: { bug, span_bug } ;
7
7
use rustc_session:: lint:: builtin:: PROC_MACRO_DERIVE_RESOLUTION_FALLBACK ;
8
8
use rustc_session:: parse:: feature_err;
9
9
use rustc_span:: hygiene:: { ExpnId , ExpnKind , LocalExpnId , MacroKind , SyntaxContext } ;
@@ -677,14 +677,21 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
677
677
innermost_binding,
678
678
binding,
679
679
)
680
- || flags. contains ( Flags :: MACRO_RULES )
681
- && innermost_flags. contains ( Flags :: MODULE )
682
- && !this. disambiguate_macro_rules_vs_modularized (
683
- binding,
684
- innermost_binding,
685
- )
686
680
{
687
681
Some ( AmbiguityKind :: MacroRulesVsModularized )
682
+ } else if flags. contains ( Flags :: MACRO_RULES )
683
+ && innermost_flags. contains ( Flags :: MODULE )
684
+ {
685
+ // should be impossible because of visitation order in
686
+ // visit_scopes
687
+ //
688
+ // we visit all macro_rules scopes (e.g. textual scope macros)
689
+ // before we visit any modules (e.g. path-based scope macros)
690
+ span_bug ! (
691
+ orig_ident. span,
692
+ "ambiguous scoped macro resolutions with path-based \
693
+ scope resolution as first candidate"
694
+ )
688
695
} else if innermost_binding. is_glob_import ( ) {
689
696
Some ( AmbiguityKind :: GlobVsOuter )
690
697
} else if innermost_binding
0 commit comments