Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/next_solver.rs')
| -rw-r--r-- | crates/hir-ty/src/next_solver.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/crates/hir-ty/src/next_solver.rs b/crates/hir-ty/src/next_solver.rs index 161a3142df..47b4b1dc4a 100644 --- a/crates/hir-ty/src/next_solver.rs +++ b/crates/hir-ty/src/next_solver.rs @@ -39,6 +39,7 @@ pub use interner::*; pub use opaques::*; pub use predicate::*; pub use region::*; +use rustc_type_ir::MayBeErased; pub use solver::*; pub use ty::*; @@ -48,6 +49,7 @@ pub use rustc_ast_ir::Mutability; pub type Binder<'db, T> = rustc_type_ir::Binder<DbInterner<'db>, T>; pub type EarlyBinder<'db, T> = rustc_type_ir::EarlyBinder<DbInterner<'db>, T>; +pub type Unnormalized<'db, T> = rustc_type_ir::Unnormalized<DbInterner<'db>, T>; pub type Canonical<'db, T> = rustc_type_ir::Canonical<DbInterner<'db>, T>; pub type CanonicalVarValues<'db> = rustc_type_ir::CanonicalVarValues<DbInterner<'db>>; pub type CanonicalVarKind<'db> = rustc_type_ir::CanonicalVarKind<DbInterner<'db>>; @@ -55,7 +57,7 @@ pub type CanonicalQueryInput<'db, V> = rustc_type_ir::CanonicalQueryInput<DbInte pub type AliasTy<'db> = rustc_type_ir::AliasTy<DbInterner<'db>>; pub type FnSig<'db> = rustc_type_ir::FnSig<DbInterner<'db>>; pub type PolyFnSig<'db> = Binder<'db, rustc_type_ir::FnSig<DbInterner<'db>>>; -pub type TypingMode<'db> = rustc_type_ir::TypingMode<DbInterner<'db>>; +pub type TypingMode<'db, S = MayBeErased> = rustc_type_ir::TypingMode<DbInterner<'db>, S>; pub type TypeError<'db> = rustc_type_ir::error::TypeError<DbInterner<'db>>; pub type QueryResult<'db> = rustc_type_ir::solve::QueryResult<DbInterner<'db>>; pub type FxIndexMap<K, V> = rustc_type_ir::data_structures::IndexMap<K, V>; @@ -85,8 +87,13 @@ pub struct DefaultTypes<'db> { pub error: Ty<'db>, /// `&'static str` pub static_str_ref: Ty<'db>, + /// `[u8]` + pub u8_slice: Ty<'db>, + /// `&'static [u8]` + pub static_u8_slice: Ty<'db>, /// `*mut ()` pub mut_unit_ptr: Ty<'db>, + pub dyn_trait_dummy_self: Ty<'db>, } pub struct DefaultConsts<'db> { @@ -236,6 +243,8 @@ pub fn default_types<'a, 'db>(db: &'db dyn HirDatabase) -> &'a DefaultAny<'db> { let empty_tys = create_tys(&[]); let unit = create_ty(TyKind::Tuple(empty_tys)); let u8 = create_ty(TyKind::Uint(rustc_ast_ir::UintTy::U8)); + let u8_slice = create_ty(TyKind::Slice(u8)); + let static_u8_slice = create_ty(TyKind::Ref(statik, u8_slice, Mutability::Not)); DefaultAny { types: DefaultTypes { usize: create_ty(TyKind::Uint(rustc_ast_ir::UintTy::Usize)), @@ -261,7 +270,11 @@ pub fn default_types<'a, 'db>(db: &'db dyn HirDatabase) -> &'a DefaultAny<'db> { never: create_ty(TyKind::Never), error: create_ty(TyKind::Error(ErrorGuaranteed)), static_str_ref: create_ty(TyKind::Ref(statik, str, rustc_ast_ir::Mutability::Not)), + u8_slice, + static_u8_slice, mut_unit_ptr: create_ty(TyKind::RawPtr(unit, rustc_ast_ir::Mutability::Mut)), + // This type must not appear anywhere except here. + dyn_trait_dummy_self: create_ty(TyKind::Infer(rustc_type_ir::InferTy::FreshTy(0))), }, consts: DefaultConsts { error: create_const(ConstKind::Error(ErrorGuaranteed)), |