resolve: Rename global_macros to macro_prelude
Rename `shadows_glob` to `shadowed_glob`
This commit is contained in:
parent
c44f72430c
commit
22143491bc
4 changed files with 15 additions and 15 deletions
|
|
@ -651,7 +651,7 @@ impl<'a> Resolver<'a> {
|
|||
binding: &'a NameBinding<'a>,
|
||||
span: Span,
|
||||
allow_shadowing: bool) {
|
||||
if self.global_macros.insert(name, binding).is_some() && !allow_shadowing {
|
||||
if self.macro_prelude.insert(name, binding).is_some() && !allow_shadowing {
|
||||
let msg = format!("`{}` is already in scope", name);
|
||||
let note =
|
||||
"macro-expanded `#[macro_use]`s may not shadow existing macros (see RFC 1560)";
|
||||
|
|
|
|||
|
|
@ -1393,7 +1393,7 @@ pub struct Resolver<'a> {
|
|||
|
||||
crate_loader: &'a mut dyn CrateLoader,
|
||||
macro_names: FxHashSet<Ident>,
|
||||
global_macros: FxHashMap<Name, &'a NameBinding<'a>>,
|
||||
macro_prelude: FxHashMap<Name, &'a NameBinding<'a>>,
|
||||
pub all_macros: FxHashMap<Name, Def>,
|
||||
lexical_macro_resolutions: Vec<(Ident, &'a Cell<LegacyScope<'a>>)>,
|
||||
macro_map: FxHashMap<DefId, Lrc<SyntaxExtension>>,
|
||||
|
|
@ -1715,7 +1715,7 @@ impl<'a> Resolver<'a> {
|
|||
|
||||
crate_loader,
|
||||
macro_names: FxHashSet(),
|
||||
global_macros: FxHashMap(),
|
||||
macro_prelude: FxHashMap(),
|
||||
all_macros: FxHashMap(),
|
||||
lexical_macro_resolutions: Vec::new(),
|
||||
macro_map: FxHashMap(),
|
||||
|
|
@ -3224,7 +3224,7 @@ impl<'a> Resolver<'a> {
|
|||
};
|
||||
}
|
||||
}
|
||||
let is_global = self.global_macros.get(&path[0].name).cloned()
|
||||
let is_global = self.macro_prelude.get(&path[0].name).cloned()
|
||||
.map(|binding| binding.get_macro(self).kind() == MacroKind::Bang).unwrap_or(false);
|
||||
if primary_ns != MacroNS && (is_global ||
|
||||
self.macro_names.contains(&path[0].modern())) {
|
||||
|
|
|
|||
|
|
@ -220,7 +220,7 @@ impl<'a> base::Resolver for Resolver<'a> {
|
|||
vis: ty::Visibility::Invisible,
|
||||
expansion: Mark::root(),
|
||||
});
|
||||
self.global_macros.insert(ident.name, binding);
|
||||
self.macro_prelude.insert(ident.name, binding);
|
||||
}
|
||||
|
||||
fn resolve_imports(&mut self) {
|
||||
|
|
@ -238,7 +238,7 @@ impl<'a> base::Resolver for Resolver<'a> {
|
|||
attr::mark_known(&attrs[i]);
|
||||
}
|
||||
|
||||
match self.global_macros.get(&name).cloned() {
|
||||
match self.macro_prelude.get(&name).cloned() {
|
||||
Some(binding) => match *binding.get_macro(self) {
|
||||
MultiModifier(..) | MultiDecorator(..) | SyntaxExtension::AttrProcMacro(..) => {
|
||||
return Some(attrs.remove(i))
|
||||
|
|
@ -274,7 +274,7 @@ impl<'a> base::Resolver for Resolver<'a> {
|
|||
}
|
||||
let trait_name = traits[j].segments[0].ident.name;
|
||||
let legacy_name = Symbol::intern(&format!("derive_{}", trait_name));
|
||||
if !self.global_macros.contains_key(&legacy_name) {
|
||||
if !self.macro_prelude.contains_key(&legacy_name) {
|
||||
continue
|
||||
}
|
||||
let span = traits.remove(j).span;
|
||||
|
|
@ -565,7 +565,7 @@ impl<'a> Resolver<'a> {
|
|||
module, ident, ns, true, record_used, path_span,
|
||||
).map(MacroBinding::Modern)
|
||||
} else {
|
||||
self.global_macros.get(&ident.name).cloned().ok_or(determinacy)
|
||||
self.macro_prelude.get(&ident.name).cloned().ok_or(determinacy)
|
||||
.map(MacroBinding::Global)
|
||||
};
|
||||
self.current_module = orig_current_module;
|
||||
|
|
@ -652,7 +652,7 @@ impl<'a> Resolver<'a> {
|
|||
|
||||
let binding = if let Some(binding) = binding {
|
||||
MacroBinding::Legacy(binding)
|
||||
} else if let Some(binding) = self.global_macros.get(&ident.name).cloned() {
|
||||
} else if let Some(binding) = self.macro_prelude.get(&ident.name).cloned() {
|
||||
if !self.use_extern_macros {
|
||||
self.record_use(ident, MacroNS, binding, DUMMY_SP);
|
||||
}
|
||||
|
|
@ -762,8 +762,8 @@ impl<'a> Resolver<'a> {
|
|||
// Then check global macros.
|
||||
}.or_else(|| {
|
||||
// FIXME: get_macro needs an &mut Resolver, can we do it without cloning?
|
||||
let global_macros = self.global_macros.clone();
|
||||
let names = global_macros.iter().filter_map(|(name, binding)| {
|
||||
let macro_prelude = self.macro_prelude.clone();
|
||||
let names = macro_prelude.iter().filter_map(|(name, binding)| {
|
||||
if binding.get_macro(self).kind() == kind {
|
||||
Some(name)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ pub struct NameResolution<'a> {
|
|||
single_imports: SingleImports<'a>,
|
||||
/// The least shadowable known binding for this name, or None if there are no known bindings.
|
||||
pub binding: Option<&'a NameBinding<'a>>,
|
||||
shadows_glob: Option<&'a NameBinding<'a>>,
|
||||
shadowed_glob: Option<&'a NameBinding<'a>>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
|
|
@ -194,7 +194,7 @@ impl<'a> Resolver<'a> {
|
|||
|
||||
if record_used {
|
||||
if let Some(binding) = resolution.binding {
|
||||
if let Some(shadowed_glob) = resolution.shadows_glob {
|
||||
if let Some(shadowed_glob) = resolution.shadowed_glob {
|
||||
let name = ident.name;
|
||||
// Forbid expanded shadowing to avoid time travel.
|
||||
if restricted_shadowing &&
|
||||
|
|
@ -401,7 +401,7 @@ impl<'a> Resolver<'a> {
|
|||
if binding.is_glob_import() {
|
||||
if !old_binding.is_glob_import() &&
|
||||
!(ns == MacroNS && old_binding.expansion != Mark::root()) {
|
||||
resolution.shadows_glob = Some(binding);
|
||||
resolution.shadowed_glob = Some(binding);
|
||||
} else if binding.def() != old_binding.def() {
|
||||
resolution.binding = Some(this.ambiguity(old_binding, binding));
|
||||
} else if !old_binding.vis.is_at_least(binding.vis, &*this) {
|
||||
|
|
@ -414,7 +414,7 @@ impl<'a> Resolver<'a> {
|
|||
resolution.binding = Some(this.ambiguity(binding, old_binding));
|
||||
} else {
|
||||
resolution.binding = Some(binding);
|
||||
resolution.shadows_glob = Some(old_binding);
|
||||
resolution.shadowed_glob = Some(old_binding);
|
||||
}
|
||||
} else {
|
||||
return Err(old_binding);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue