about summary refs log tree commit diff
path: root/src/librustc_resolve
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2018-10-04 14:41:58 +0400
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2018-10-05 11:46:12 +0400
commit0d8e9cd4df6d2a5e059168fac16d4de9e6eb62fe (patch)
tree3a9bef4548268adf538ac9ce0858832bfcc427ce /src/librustc_resolve
parentc29fb80c05a83def4eff6cfd32154e13bbb08341 (diff)
downloadrust-0d8e9cd4df6d2a5e059168fac16d4de9e6eb62fe.tar.gz
rust-0d8e9cd4df6d2a5e059168fac16d4de9e6eb62fe.zip
Reapply the macro_rules disambiguation changes from master
Diffstat (limited to 'src/librustc_resolve')
-rw-r--r--src/librustc_resolve/macros.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/librustc_resolve/macros.rs b/src/librustc_resolve/macros.rs
index 54eb27d4f39..c31b558dede 100644
--- a/src/librustc_resolve/macros.rs
+++ b/src/librustc_resolve/macros.rs
@@ -642,7 +642,7 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
                 }
                 WhereToResolve::MacroRules(legacy_scope) => match legacy_scope {
                     LegacyScope::Binding(legacy_binding) if ident == legacy_binding.ident =>
-                        Ok((legacy_binding.binding, Flags::MACRO_RULES, Flags::MODULE)),
+                        Ok((legacy_binding.binding, Flags::MACRO_RULES, Flags::empty())),
                     _ => Err(Determinacy::Determined),
                 }
                 WhereToResolve::Module(module) => {
@@ -804,7 +804,10 @@ impl<'a, 'cl> Resolver<'a, 'cl> {
                            (innermost_binding.is_glob_import() ||
                             innermost_binding.may_appear_after(parent_scope.expansion, binding) ||
                             innermost_flags.intersects(ambig_flags) ||
-                            flags.intersects(innermost_ambig_flags)) {
+                            flags.intersects(innermost_ambig_flags) ||
+                            (innermost_flags.contains(Flags::MACRO_RULES) &&
+                             flags.contains(Flags::MODULE) &&
+                             !self.disambiguate_legacy_vs_modern(innermost_binding, binding))) {
                             self.ambiguity_errors.push(AmbiguityError {
                                 ident,
                                 b1: innermost_binding,