)
}
-#[test]
-fn infer_closure_unify() {
- check_infer(
- r#"
- fn foo(f: bool) {
- let a = |x| x;
- let b = |x| x;
- let id = if f { a } else { b };
- id(123);
- }
- "#,
- expect![[r#"
- 7..8 'f': bool
- 16..106 '{ ...23); }': ()
- 26..27 'a': |i32| -> i32
- 30..35 '|x| x': |i32| -> i32
- 31..32 'x': i32
- 34..35 'x': i32
- 45..46 'b': |i32| -> i32
- 49..54 '|x| x': |i32| -> i32
- 50..51 'x': i32
- 53..54 'x': i32
- 64..66 'id': |i32| -> i32
- 69..90 'if f {... { b }': |i32| -> i32
- 72..73 'f': bool
- 74..79 '{ a }': |i32| -> i32
- 76..77 'a': |i32| -> i32
- 85..90 '{ b }': |i32| -> i32
- 87..88 'b': |i32| -> i32
- 96..98 'id': |i32| -> i32
- 96..103 'id(123)': i32
- 99..102 '123': i32
- "#]],
- )
-}
-
#[test]
fn infer_if_match_with_return() {
check_infer(
let b = [a, ["b"]];
let x: [u8; 0] = [];
+ // FIXME: requires const evaluation/taking type from rhs somehow
+ let y: [u8; 2+2] = [1,2,3,4];
}
"#,
expect![[r#"
8..9 'x': &str
17..18 'y': isize
- 27..292 '{ ... []; }': ()
+ 27..395 '{ ...,4]; }': ()
37..38 'a': [&str; 1]
41..44 '[x]': [&str; 1]
42..43 'x': &str
259..262 '"b"': &str
274..275 'x': [u8; 0]
287..289 '[]': [u8; 0]
+ 368..369 'y': [u8; _]
+ 383..392 '[1,2,3,4]': [u8; 4]
+ 384..385 '1': u8
+ 386..387 '2': u8
+ 388..389 '3': u8
+ 390..391 '4': u8
"#]],
);
}