Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir_ty/src/consteval.rs')
-rw-r--r--crates/hir_ty/src/consteval.rs23
1 files changed, 11 insertions, 12 deletions
diff --git a/crates/hir_ty/src/consteval.rs b/crates/hir_ty/src/consteval.rs
index 009ea008fc..4b58262dac 100644
--- a/crates/hir_ty/src/consteval.rs
+++ b/crates/hir_ty/src/consteval.rs
@@ -20,7 +20,7 @@ use stdx::never;
use crate::{
db::HirDatabase, infer::InferenceContext, lower::ParamLoweringMode, to_placeholder_idx,
utils::Generics, Const, ConstData, ConstValue, GenericArg, InferenceResult, Interner, Ty,
- TyKind,
+ TyBuilder, TyKind,
};
/// Extension trait for [`Const`]
@@ -401,23 +401,22 @@ pub fn unknown_const(ty: Ty) -> Const {
.intern(Interner)
}
-pub fn unknown_const_usize() -> Const {
- unknown_const(TyKind::Scalar(chalk_ir::Scalar::Uint(chalk_ir::UintTy::Usize)).intern(Interner))
-}
-
pub fn unknown_const_as_generic(ty: Ty) -> GenericArg {
GenericArgData::Const(unknown_const(ty)).intern(Interner)
}
+/// Interns a constant scalar with the given type
+pub fn intern_scalar_const(value: ConstScalar, ty: Ty) -> Const {
+ ConstData { ty, value: ConstValue::Concrete(chalk_ir::ConcreteConst { interned: value }) }
+ .intern(Interner)
+}
+
/// Interns a possibly-unknown target usize
pub fn usize_const(value: Option<u64>) -> Const {
- ConstData {
- ty: TyKind::Scalar(chalk_ir::Scalar::Uint(chalk_ir::UintTy::Usize)).intern(Interner),
- value: ConstValue::Concrete(chalk_ir::ConcreteConst {
- interned: value.map(ConstScalar::Usize).unwrap_or(ConstScalar::Unknown),
- }),
- }
- .intern(Interner)
+ intern_scalar_const(
+ value.map(ConstScalar::Usize).unwrap_or(ConstScalar::Unknown),
+ TyBuilder::usize(),
+ )
}
pub(crate) fn const_eval_recover(