@@ -349,7 +349,6 @@ trait Trait: SuperTrait {
349349
350350#[ test]
351351fn infer_project_associated_type ( ) {
352- // y, z, a don't yet work because of https://github.com/rust-lang/chalk/issues/234
353352 assert_snapshot ! (
354353 infer( r#"
355354trait Iterable {
@@ -368,12 +367,12 @@ fn test<T: Iterable>() {
368367 [108; 261) '{ ...ter; }': ()
369368 [118; 119) 'x': u32
370369 [145; 146) '1': u32
371- [156; 157) 'y': {unknown}
372- [183; 192) 'no_matter': {unknown}
373- [202; 203) 'z': {unknown}
374- [215; 224) 'no_matter': {unknown}
375- [234; 235) 'a': {unknown}
376- [249; 258) 'no_matter': {unknown}
370+ [156; 157) 'y': Iterable::Item<T>
371+ [183; 192) 'no_matter': Iterable::Item<T>
372+ [202; 203) 'z': Iterable::Item<T>
373+ [215; 224) 'no_matter': Iterable::Item<T>
374+ [234; 235) 'a': Iterable::Item<T>
375+ [249; 258) 'no_matter': Iterable::Item<T>
377376 "###
378377 ) ;
379378}
@@ -433,8 +432,8 @@ fn test<T: Iterable<Item=u32>>() {
433432"# ) ,
434433 @r###"
435434 [67; 100) '{ ...own; }': ()
436- [77; 78) 'y': {unknown}
437- [90; 97) 'unknown': {unknown}
435+ [77; 78) 'y': u32
436+ [90; 97) 'unknown': u32
438437 "###
439438 ) ;
440439}
@@ -549,7 +548,7 @@ impl std::ops::Index<u32> for Bar {
549548
550549fn test() {
551550 let a = Bar;
552- let b = a[1 ];
551+ let b = a[1u32 ];
553552 b<|>;
554553}
555554
@@ -574,7 +573,7 @@ fn infer_ops_index_autoderef() {
574573//- /main.rs crate:main deps:std
575574fn test() {
576575 let a = &[1u32, 2, 3];
577- let b = a[1 ];
576+ let b = a[1u32 ];
578577 b<|>;
579578}
580579
@@ -916,11 +915,7 @@ fn test<T: ApplyL>(t: T) {
916915}
917916"# ,
918917 ) ;
919- // FIXME here Chalk doesn't normalize the type to a placeholder. I think we
920- // need to add a rule like Normalize(<T as ApplyL>::Out -> ApplyL::Out<T>)
921- // to the trait env ourselves here; probably Chalk can't do this by itself.
922- // assert_eq!(t, "ApplyL::Out<[missing name]>");
923- assert_eq ! ( t, "{unknown}" ) ;
918+ assert_eq ! ( t, "ApplyL::Out<T>" ) ;
924919}
925920
926921#[ test]
@@ -1329,16 +1324,16 @@ fn test<T: Trait<Type = u32>>(x: T, y: impl Trait<Type = i64>) {
13291324 [263; 264) 'y': impl Trait<Type = i64>
13301325 [290; 398) '{ ...r>); }': ()
13311326 [296; 299) 'get': fn get<T>(T) -> <T as Trait>::Type
1332- [296; 302) 'get(x)': {unknown}
1327+ [296; 302) 'get(x)': u32
13331328 [300; 301) 'x': T
1334- [308; 312) 'get2': fn get2<{unknown} , T>(T) -> {unknown}
1335- [308; 315) 'get2(x)': {unknown}
1329+ [308; 312) 'get2': fn get2<u32 , T>(T) -> u32
1330+ [308; 315) 'get2(x)': u32
13361331 [313; 314) 'x': T
13371332 [321; 324) 'get': fn get<impl Trait<Type = i64>>(impl Trait<Type = i64>) -> <impl Trait<Type = i64> as Trait>::Type
1338- [321; 327) 'get(y)': {unknown}
1333+ [321; 327) 'get(y)': i64
13391334 [325; 326) 'y': impl Trait<Type = i64>
1340- [333; 337) 'get2': fn get2<{unknown} , impl Trait<Type = i64>>(impl Trait<Type = i64>) -> {unknown}
1341- [333; 340) 'get2(y)': {unknown}
1335+ [333; 337) 'get2': fn get2<i64 , impl Trait<Type = i64>>(impl Trait<Type = i64>) -> i64
1336+ [333; 340) 'get2(y)': i64
13421337 [338; 339) 'y': impl Trait<Type = i64>
13431338 [346; 349) 'get': fn get<S<u64>>(S<u64>) -> <S<u64> as Trait>::Type
13441339 [346; 357) 'get(set(S))': u64
@@ -1402,7 +1397,6 @@ mod iter {
14021397
14031398#[ test]
14041399fn projection_eq_within_chalk ( ) {
1405- // std::env::set_var("CHALK_DEBUG", "1");
14061400 assert_snapshot ! (
14071401 infer( r#"
14081402trait Trait1 {
@@ -1422,7 +1416,7 @@ fn test<T: Trait1<Type = u32>>(x: T) {
14221416 [164; 165) 'x': T
14231417 [170; 186) '{ ...o(); }': ()
14241418 [176; 177) 'x': T
1425- [176; 183) 'x.foo()': {unknown}
1419+ [176; 183) 'x.foo()': u32
14261420 "###
14271421 ) ;
14281422}
@@ -1578,7 +1572,7 @@ fn test<F: FnOnce(u32, u64) -> u128>(f: F) {
15781572 [150; 151) 'f': F
15791573 [156; 184) '{ ...2)); }': ()
15801574 [162; 163) 'f': F
1581- [162; 181) 'f.call...1, 2))': {unknown}
1575+ [162; 181) 'f.call...1, 2))': u128
15821576 [174; 180) '(1, 2)': (u32, u64)
15831577 [175; 176) '1': u32
15841578 [178; 179) '2': u64
@@ -1829,7 +1823,7 @@ impl Trait for S2 {
18291823"# ,
18301824 ) , @r###"
18311825 [54; 58) 'self': &Self
1832- [60; 61) 'x': {unknown}
1826+ [60; 61) 'x': Trait::Item<Self>
18331827 [140; 144) 'self': &S
18341828 [146; 147) 'x': u32
18351829 [161; 175) '{ let y = x; }': ()
@@ -1989,9 +1983,7 @@ fn test<I: Iterator<Item: Iterator<Item = u32>>>() {
19891983}
19901984"# ,
19911985 ) ;
1992- // assert_eq!(t, "u32");
1993- // doesn't currently work, Chalk #234
1994- assert_eq ! ( t, "{unknown}" ) ;
1986+ assert_eq ! ( t, "u32" ) ;
19951987}
19961988
19971989#[ test]
0 commit comments