aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2019-01-10 21:49:43 +0000
committerFlorian Diebold <[email protected]>2019-01-11 21:59:00 +0000
commit1212e59beed25d768bfaf7bb202aa955a87106e9 (patch)
treee2996f670efd50d346cfa8dd0f836bcb65aca4dc /crates/ra_hir/src/ty
parentf60153ee9e1d598c170743633448aa3ede8cb72e (diff)
Fix assertion error in unification (hopefully)
Currently, all types that we handle during inference need to be resolved as far as possible at the time. It's maybe too brittle of an invariant; I need to think how we can do this better. This should fix #484 though, I hope (if it's the same case as I managed to reproduce).
Diffstat (limited to 'crates/ra_hir/src/ty')
-rw-r--r--crates/ra_hir/src/ty/tests.rs12
-rw-r--r--crates/ra_hir/src/ty/tests/data/bug_484.txt5
2 files changed, 17 insertions, 0 deletions
diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs
index d8c0af326..815aecda7 100644
--- a/crates/ra_hir/src/ty/tests.rs
+++ b/crates/ra_hir/src/ty/tests.rs
@@ -230,6 +230,18 @@ fn test2(a1: *const A, a2: *mut A) {
230 ); 230 );
231} 231}
232 232
233#[test]
234fn infer_bug_484() {
235 check_inference(
236 r#"
237fn test() {
238 let x = if true {};
239}
240"#,
241 "bug_484.txt",
242 );
243}
244
233fn infer(content: &str) -> String { 245fn infer(content: &str) -> String {
234 let (db, _, file_id) = MockDatabase::with_single_file(content); 246 let (db, _, file_id) = MockDatabase::with_single_file(content);
235 let source_file = db.source_file(file_id); 247 let source_file = db.source_file(file_id);
diff --git a/crates/ra_hir/src/ty/tests/data/bug_484.txt b/crates/ra_hir/src/ty/tests/data/bug_484.txt
new file mode 100644
index 000000000..300530551
--- /dev/null
+++ b/crates/ra_hir/src/ty/tests/data/bug_484.txt
@@ -0,0 +1,5 @@
1[11; 37) '{ l... {}; }': ()
2[20; 21) 'x': ()
3[24; 34) 'if true {}': ()
4[27; 31) 'true': bool
5[32; 34) '{}': ()