resolve: don't resolve paths that point to non-static methods

Fixes #6698
This commit is contained in:
Philipp Brüschweiler 2013-06-03 13:31:43 +02:00
parent 45441e046b
commit 394ac1aae4
1 changed files with 22 additions and 3 deletions

View File

@ -4595,7 +4595,7 @@ impl Resolver {
}
let name = *path.idents.last();
match self.resolve_definition_of_name_in_module(containing_module,
let def = match self.resolve_definition_of_name_in_module(containing_module,
name,
namespace,
xray) {
@ -4604,9 +4604,28 @@ impl Resolver {
return None;
}
ChildNameDefinition(def) | ImportNameDefinition(def) => {
return Some(def);
def
}
}
};
match containing_module.kind {
TraitModuleKind | ImplModuleKind => {
match self.method_map.find(&name) {
Some(s) => {
match containing_module.def_id {
Some(def_id) if s.contains(&def_id) => {
debug!("containing module was a trait or impl \
and name was a method -> not resolved");
return None;
},
_ => (),
}
},
None => (),
}
},
_ => (),
};
return Some(def);
}
/// Invariant: This must be called only during main resolution, not during