diff --git a/crates/hir_ty/src/consts.rs b/crates/hir_ty/src/consts.rs index 77d2a7a055..0044b1cffc 100644 --- a/crates/hir_ty/src/consts.rs +++ b/crates/hir_ty/src/consts.rs @@ -4,7 +4,8 @@ #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum ConstScalar { // for now, we only support the trivial case of constant evaluating the length of an array - Usize(usize), + // Note that this is u64 because the target usize may be bigger than our usize + Usize(u64), /// Case of an unknown value that rustc might know but we don't Unknown, diff --git a/crates/hir_ty/src/infer/expr.rs b/crates/hir_ty/src/infer/expr.rs index 9aec8a236f..a7e720f880 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs @@ -746,7 +746,7 @@ impl<'a> InferenceContext<'a> { ty: TyKind::Scalar(Scalar::Uint(UintTy::Usize)).intern(&Interner), value: ConstValue::Concrete(chalk_ir::ConcreteConst { interned: len - .map(|len| ConstScalar::Usize(len)) + .map(|len| ConstScalar::Usize(len as u64)) .unwrap_or(ConstScalar::Unknown), }), };