diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-10-04 14:41:58 +0400 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-10-05 11:46:12 +0400 |
| commit | 0d8e9cd4df6d2a5e059168fac16d4de9e6eb62fe (patch) | |
| tree | 3a9bef4548268adf538ac9ce0858832bfcc427ce /src/librustc_resolve | |
| parent | c29fb80c05a83def4eff6cfd32154e13bbb08341 (diff) | |
| download | rust-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.rs | 7 |
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, |
