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)";
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>>,
crate_loader,
macro_names: FxHashSet(),
- global_macros: FxHashMap(),
+ macro_prelude: FxHashMap(),
all_macros: FxHashMap(),
lexical_macro_resolutions: Vec::new(),
macro_map: FxHashMap(),
};
}
}
- 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())) {
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) {
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))
}
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;
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;
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);
}
// 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 {
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)]
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 &&
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) {
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);