aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src/lower.rs
diff options
context:
space:
mode:
authorJade <[email protected]>2021-05-11 13:06:33 +0100
committerJade <[email protected]>2021-05-11 13:25:19 +0100
commitdc63fea427280ff278bf89a8b9c78df606009910 (patch)
tree5fb6eae3df58a7c5bc3bc5a1220dd9a5d6d3ea86 /crates/hir_ty/src/lower.rs
parent77f0c92fd8311bccc001ddaf9eb72662d35e9836 (diff)
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?
Diffstat (limited to 'crates/hir_ty/src/lower.rs')
-rw-r--r--crates/hir_ty/src/lower.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/crates/hir_ty/src/lower.rs b/crates/hir_ty/src/lower.rs
index c99dd8d0a..9751b45e4 100644
--- a/crates/hir_ty/src/lower.rs
+++ b/crates/hir_ty/src/lower.rs
@@ -174,6 +174,8 @@ impl<'a> TyLoweringContext<'a> {
174 } 174 }
175 TypeRef::Array(inner) => { 175 TypeRef::Array(inner) => {
176 let inner_ty = self.lower_ty(inner); 176 let inner_ty = self.lower_ty(inner);
177 // FIXME: we don't have length info here because we don't store an expression for
178 // the length
177 TyKind::Array(inner_ty, dummy_usize_const()).intern(&Interner) 179 TyKind::Array(inner_ty, dummy_usize_const()).intern(&Interner)
178 } 180 }
179 TypeRef::Slice(inner) => { 181 TypeRef::Slice(inner) => {