commit
13aa18891c
src
@ -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
|
||||
|
17
src/test/compile-fail/call-extern-trait-as-function.rs
Normal file
17
src/test/compile-fail/call-extern-trait-as-function.rs
Normal file
@ -0,0 +1,17 @@
|
||||
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// issue #6698
|
||||
|
||||
fn V() -> bool {
|
||||
std::clone::Clone::clone(true) //~ ERROR error: unresolved name `std::clone::Clone::clone`.
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
x
Reference in New Issue
Block a user