infer associated method in local scope

This commit is contained in:
zhoufan 2021-12-14 15:34:57 +08:00
parent 791722b70a
commit 7b952cb1aa
2 changed files with 32 additions and 1 deletions

View File

@ -227,7 +227,7 @@ impl<'a> InferenceContext<'a> {
self.table.trait_env.clone(),
krate,
&traits_in_scope,
None,
self.resolver.module(),
Some(name),
method_resolution::LookupMode::Path,
move |_ty, item| {

View File

@ -84,6 +84,37 @@ fn infer_associated_method_struct() {
);
}
#[test]
fn infer_associated_method_struct_in_local_scope() {
check_infer(
r#"
fn mismatch() {
struct A;
impl A {
fn from(_: i32, _: i32) -> Self {
A
}
}
let _a = A::from(1, 2);
}
"#,
expect![[r#"
14..146 '{ ... 2); }': ()
125..127 '_a': A
130..137 'A::from': fn from(i32, i32) -> A
130..143 'A::from(1, 2)': A
138..139 '1': i32
141..142 '2': i32
60..61 '_': i32
68..69 '_': i32
84..109 '{ ... }': A
98..99 'A': A
"#]],
);
}
#[test]
fn infer_associated_method_enum() {
check_infer(