From 78f1583bdd0cc3d7adb65be6441db52e75e17060 Mon Sep 17 00:00:00 2001 From: Comonad Date: Thu, 29 Apr 2021 15:26:41 +0800 Subject: fix: closure unify without check ClosureId closes #8604 --- crates/hir_ty/src/tests/simple.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'crates/hir_ty/src/tests') diff --git a/crates/hir_ty/src/tests/simple.rs b/crates/hir_ty/src/tests/simple.rs index 5948d0bc2..0eefd70f2 100644 --- a/crates/hir_ty/src/tests/simple.rs +++ b/crates/hir_ty/src/tests/simple.rs @@ -1028,6 +1028,42 @@ fn infer_in_elseif() { ) } +#[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( -- cgit v1.2.3