Allow prelude imports to shadow eachother (needed for the [pretty] tests)
Derive the Default impl for NameResolution
This commit is contained in:
parent
3c62d90202
commit
3df40c09ec
@ -99,7 +99,7 @@ fn import<'a>(&self, binding: &'a NameBinding<'a>) -> NameBinding<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
#[derive(Clone, Default)]
|
||||
/// Records information about the resolution of a name in a module.
|
||||
pub struct NameResolution<'a> {
|
||||
/// The number of unresolved single imports that could define the name.
|
||||
@ -108,12 +108,6 @@ pub struct NameResolution<'a> {
|
||||
pub binding: Option<&'a NameBinding<'a>>,
|
||||
}
|
||||
|
||||
impl<'a> Default for NameResolution<'a> {
|
||||
fn default() -> Self {
|
||||
NameResolution { outstanding_references: 0, binding: None }
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> NameResolution<'a> {
|
||||
pub fn result(&self, outstanding_globs: usize) -> ResolveResult<&'a NameBinding<'a>> {
|
||||
// If no unresolved imports (single or glob) can define the name, self.binding is final.
|
||||
@ -137,8 +131,8 @@ pub fn result(&self, outstanding_globs: usize) -> ResolveResult<&'a NameBinding<
|
||||
pub fn try_define(&mut self, binding: &'a NameBinding<'a>) -> Result<(), &'a NameBinding<'a>> {
|
||||
let is_prelude = |binding: &NameBinding| binding.defined_with(DefModifiers::PRELUDE);
|
||||
let old_binding = match self.binding {
|
||||
Some(old_binding) if is_prelude(binding) && !is_prelude(old_binding) => return Ok(()),
|
||||
Some(old_binding) if is_prelude(old_binding) == is_prelude(binding) => old_binding,
|
||||
Some(_) if is_prelude(binding) => return Ok(()),
|
||||
Some(old_binding) if !is_prelude(old_binding) => old_binding,
|
||||
_ => { self.binding = Some(binding); return Ok(()); }
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user