Add test for <T>::Item
This commit is contained in:
parent
fe1dfd2b20
commit
35d1c03896
1 changed files with 22 additions and 10 deletions
|
@ -2685,6 +2685,7 @@ fn test() {
|
|||
|
||||
#[test]
|
||||
fn infer_project_associated_type() {
|
||||
// y, z, a don't yet work because of https://github.com/rust-lang/chalk/issues/234
|
||||
assert_snapshot!(
|
||||
infer(r#"
|
||||
trait Iterable {
|
||||
|
@ -2696,16 +2697,19 @@ fn test<T: Iterable>() {
|
|||
let x: <S as Iterable>::Item = 1;
|
||||
let y: <T as Iterable>::Item = no_matter;
|
||||
let z: T::Item = no_matter;
|
||||
let a: <T>::Item = no_matter;
|
||||
}
|
||||
"#),
|
||||
@r###"
|
||||
[108; 227) '{ ...ter; }': ()
|
||||
[108; 261) '{ ...ter; }': ()
|
||||
[118; 119) 'x': u32
|
||||
[145; 146) '1': u32
|
||||
[156; 157) 'y': {unknown}
|
||||
[183; 192) 'no_matter': {unknown}
|
||||
[202; 203) 'z': {unknown}
|
||||
[215; 224) 'no_matter': {unknown}
|
||||
[234; 235) 'a': {unknown}
|
||||
[249; 258) 'no_matter': {unknown}
|
||||
"###
|
||||
);
|
||||
}
|
||||
|
@ -2721,9 +2725,11 @@ struct S;
|
|||
impl Iterable for S { type Item = u32; }
|
||||
fn foo1<T: Iterable>(t: T) -> T::Item {}
|
||||
fn foo2<T: Iterable>(t: T) -> <T as Iterable>::Item {}
|
||||
fn foo3<T: Iterable>(t: T) -> <T>::Item {}
|
||||
fn test() {
|
||||
let x = foo1(S);
|
||||
let y = foo2(S);
|
||||
let z = foo3(S);
|
||||
}
|
||||
"#),
|
||||
@r###"
|
||||
|
@ -2731,15 +2737,21 @@ fn test() {
|
|||
[123; 125) '{}': ()
|
||||
[147; 148) 't': T
|
||||
[178; 180) '{}': ()
|
||||
[191; 236) '{ ...(S); }': ()
|
||||
[201; 202) 'x': u32
|
||||
[205; 209) 'foo1': fn foo1<S>(T) -> <T as Iterable>::Item
|
||||
[205; 212) 'foo1(S)': u32
|
||||
[210; 211) 'S': S
|
||||
[222; 223) 'y': u32
|
||||
[226; 230) 'foo2': fn foo2<S>(T) -> <T as Iterable>::Item
|
||||
[226; 233) 'foo2(S)': u32
|
||||
[231; 232) 'S': S
|
||||
[202; 203) 't': T
|
||||
[221; 223) '{}': ()
|
||||
[234; 300) '{ ...(S); }': ()
|
||||
[244; 245) 'x': u32
|
||||
[248; 252) 'foo1': fn foo1<S>(T) -> <T as Iterable>::Item
|
||||
[248; 255) 'foo1(S)': u32
|
||||
[253; 254) 'S': S
|
||||
[265; 266) 'y': u32
|
||||
[269; 273) 'foo2': fn foo2<S>(T) -> <T as Iterable>::Item
|
||||
[269; 276) 'foo2(S)': u32
|
||||
[274; 275) 'S': S
|
||||
[286; 287) 'z': u32
|
||||
[290; 294) 'foo3': fn foo3<S>(T) -> <T as Iterable>::Item
|
||||
[290; 297) 'foo3(S)': u32
|
||||
[295; 296) 'S': S
|
||||
"###
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue