From dc63fea427280ff278bf89a8b9c78df606009910 Mon Sep 17 00:00:00 2001 From: Jade Date: Tue, 11 May 2021 05:06:33 -0700 Subject: Add basic support for array lengths in types This recognizes `let a = [1u8, 2, 3]` as having type `[u8; 3]` instead of the previous `[u8; _]`. Byte strings and `[0u8; 2]` kinds of range array declarations are unsupported as before. I don't know why a bunch of our rustc tests had single quotes inside strings un-escaped by `UPDATE_EXPECT=1 cargo t`, but I don't think it's bad? Maybe something in a nightly? --- crates/hir_ty/src/tests/regression.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'crates/hir_ty/src/tests/regression.rs') diff --git a/crates/hir_ty/src/tests/regression.rs b/crates/hir_ty/src/tests/regression.rs index d14f5c9bb..769809edf 100644 --- a/crates/hir_ty/src/tests/regression.rs +++ b/crates/hir_ty/src/tests/regression.rs @@ -99,7 +99,7 @@ fn recursive_vars() { 10..47 '{ ...&y]; }': () 20..21 'y': &{unknown} 24..31 'unknown': &{unknown} - 37..44 '[y, &y]': [&&{unknown}; _] + 37..44 '[y, &y]': [&&{unknown}; 2] 38..39 'y': &{unknown} 41..43 '&y': &&{unknown} 42..43 'y': &{unknown} @@ -123,7 +123,7 @@ fn recursive_vars_2() { 24..31 'unknown': &&{unknown} 41..42 'y': &&{unknown} 45..52 'unknown': &&{unknown} - 58..76 '[(x, y..., &x)]': [(&&&{unknown}, &&&{unknown}); _] + 58..76 '[(x, y..., &x)]': [(&&&{unknown}, &&&{unknown}); 2] 59..65 '(x, y)': (&&&{unknown}, &&&{unknown}) 60..61 'x': &&{unknown} 63..64 'y': &&{unknown} @@ -175,8 +175,8 @@ fn infer_std_crash_2() { "#, expect![[r#" 22..52 '{ ...n']; }': () - 28..49 '&[0, b...b'\n']': &[u8; _] - 29..49 '[0, b'...b'\n']': [u8; _] + 28..49 '&[0, b...b'\n']': &[u8; 4] + 29..49 '[0, b'...b'\n']': [u8; 4] 30..31 '0': u8 33..38 'b'\n'': u8 40..41 '1': u8 @@ -336,8 +336,8 @@ fn infer_array_macro_call() { expect![[r#" !0..4 '0u32': u32 44..69 '{ ...()]; }': () - 54..55 'a': [u32; _] - 58..66 '[bar!()]': [u32; _] + 54..55 'a': [u32; 1] + 58..66 '[bar!()]': [u32; 1] "#]], ); } -- cgit v1.2.3