Skip to content

Commit 2f02977

Browse files
committed
More moving stuff around
1 parent 9fba7cf commit 2f02977

File tree

4 files changed

+74
-78
lines changed

4 files changed

+74
-78
lines changed

crates/hir_ty/src/chalk_db.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use hir_expand::name::name;
1717
use crate::{
1818
db::HirDatabase,
1919
display::HirDisplay,
20-
from_assoc_type_id, make_only_type_binders,
20+
from_assoc_type_id, from_chalk_trait_id, make_only_type_binders,
2121
mapping::{from_chalk, ToChalk, TypeAliasAsValue},
2222
method_resolution::{TyFingerprint, ALL_FLOAT_FPS, ALL_INT_FPS},
2323
to_assoc_type_id, to_chalk_trait_id,
@@ -79,7 +79,7 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
7979
binders: &CanonicalVarKinds<Interner>,
8080
) -> Vec<ImplId> {
8181
debug!("impls_for_trait {:?}", trait_id);
82-
let trait_: hir_def::TraitId = from_chalk(self.db, trait_id);
82+
let trait_: hir_def::TraitId = from_chalk_trait_id(trait_id);
8383

8484
let ty: Ty = parameters[0].assert_ty_ref(&Interner).clone();
8585

@@ -161,7 +161,7 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
161161
Some(LangItemTarget::TraitId(trait_)) => trait_,
162162
_ => return None,
163163
};
164-
Some(trait_.to_chalk(self.db))
164+
Some(to_chalk_trait_id(trait_))
165165
}
166166

167167
fn program_clauses_for_env(
@@ -308,7 +308,7 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
308308
}
309309

310310
fn trait_name(&self, trait_id: chalk_ir::TraitId<Interner>) -> String {
311-
let id = from_chalk(self.db, trait_id);
311+
let id = from_chalk_trait_id(trait_id);
312312
self.db.trait_data(id).name.to_string()
313313
}
314314
fn adt_name(&self, chalk_ir::AdtId(adt_id): AdtId) -> String {
@@ -413,7 +413,7 @@ pub(crate) fn trait_datum_query(
413413
trait_id: TraitId,
414414
) -> Arc<TraitDatum> {
415415
debug!("trait_datum {:?}", trait_id);
416-
let trait_: hir_def::TraitId = from_chalk(db, trait_id);
416+
let trait_ = from_chalk_trait_id(trait_id);
417417
let trait_data = db.trait_data(trait_);
418418
debug!("trait {:?} = {:?}", trait_id, trait_data.name);
419419
let generic_params = generics(db.upcast(), trait_.into());
@@ -723,7 +723,10 @@ pub(super) fn generic_predicate_to_inline_bound(
723723
.collect();
724724
let alias_eq_bound = rust_ir::AliasEqBound {
725725
value: ty.clone(),
726-
trait_bound: rust_ir::TraitBound { trait_id: trait_.to_chalk(db), args_no_self },
726+
trait_bound: rust_ir::TraitBound {
727+
trait_id: to_chalk_trait_id(trait_),
728+
args_no_self,
729+
},
727730
associated_ty_id: projection_ty.associated_ty_id,
728731
parameters: Vec::new(), // FIXME we don't support generic associated types yet
729732
};

crates/hir_ty/src/lib.rs

Lines changed: 6 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,12 @@ mod test_db;
3434

3535
use std::sync::Arc;
3636

37-
use base_db::salsa;
3837
use chalk_ir::{
3938
fold::{Fold, Shift},
4039
interner::HasInterner,
4140
UintTy,
4241
};
43-
use hir_def::{
44-
expr::ExprId, type_ref::Rawness, ConstParamId, LifetimeParamId, TraitId, TypeAliasId,
45-
TypeParamId,
46-
};
42+
use hir_def::{expr::ExprId, type_ref::Rawness, TypeParamId};
4743

4844
use crate::{db::HirDatabase, display::HirDisplay, utils::generics};
4945

@@ -56,6 +52,11 @@ pub use lower::{
5652
associated_type_shorthand_candidates, callable_item_sig, CallableDefId, ImplTraitLoweringMode,
5753
TyDefId, TyLoweringContext, ValueTyDefId,
5854
};
55+
pub use mapping::{
56+
const_from_placeholder_idx, from_assoc_type_id, from_chalk_trait_id, from_foreign_def_id,
57+
from_placeholder_idx, lt_from_placeholder_idx, to_assoc_type_id, to_chalk_trait_id,
58+
to_foreign_def_id, to_placeholder_idx,
59+
};
5960
pub use traits::TraitEnvironment;
6061
pub use walk::TypeWalk;
6162

@@ -242,56 +243,6 @@ pub(crate) struct ReturnTypeImplTrait {
242243
pub(crate) bounds: Binders<Vec<QuantifiedWhereClause>>,
243244
}
244245

245-
pub fn to_foreign_def_id(id: TypeAliasId) -> ForeignDefId {
246-
chalk_ir::ForeignDefId(salsa::InternKey::as_intern_id(&id))
247-
}
248-
249-
pub fn from_foreign_def_id(id: ForeignDefId) -> TypeAliasId {
250-
salsa::InternKey::from_intern_id(id.0)
251-
}
252-
253-
pub fn to_assoc_type_id(id: TypeAliasId) -> AssocTypeId {
254-
chalk_ir::AssocTypeId(salsa::InternKey::as_intern_id(&id))
255-
}
256-
257-
pub fn from_assoc_type_id(id: AssocTypeId) -> TypeAliasId {
258-
salsa::InternKey::from_intern_id(id.0)
259-
}
260-
261-
pub fn from_placeholder_idx(db: &dyn HirDatabase, idx: PlaceholderIndex) -> TypeParamId {
262-
assert_eq!(idx.ui, chalk_ir::UniverseIndex::ROOT);
263-
let interned_id = salsa::InternKey::from_intern_id(salsa::InternId::from(idx.idx));
264-
db.lookup_intern_type_param_id(interned_id)
265-
}
266-
267-
pub fn to_placeholder_idx(db: &dyn HirDatabase, id: TypeParamId) -> PlaceholderIndex {
268-
let interned_id = db.intern_type_param_id(id);
269-
PlaceholderIndex {
270-
ui: chalk_ir::UniverseIndex::ROOT,
271-
idx: salsa::InternKey::as_intern_id(&interned_id).as_usize(),
272-
}
273-
}
274-
275-
pub fn lt_from_placeholder_idx(db: &dyn HirDatabase, idx: PlaceholderIndex) -> LifetimeParamId {
276-
assert_eq!(idx.ui, chalk_ir::UniverseIndex::ROOT);
277-
let interned_id = salsa::InternKey::from_intern_id(salsa::InternId::from(idx.idx));
278-
db.lookup_intern_lifetime_param_id(interned_id)
279-
}
280-
281-
pub fn const_from_placeholder_idx(db: &dyn HirDatabase, idx: PlaceholderIndex) -> ConstParamId {
282-
assert_eq!(idx.ui, chalk_ir::UniverseIndex::ROOT);
283-
let interned_id = salsa::InternKey::from_intern_id(salsa::InternId::from(idx.idx));
284-
db.lookup_intern_const_param_id(interned_id)
285-
}
286-
287-
pub fn to_chalk_trait_id(id: TraitId) -> ChalkTraitId {
288-
chalk_ir::TraitId(salsa::InternKey::as_intern_id(&id))
289-
}
290-
291-
pub fn from_chalk_trait_id(id: ChalkTraitId) -> TraitId {
292-
salsa::InternKey::from_intern_id(id.0)
293-
}
294-
295246
pub fn static_lifetime() -> Lifetime {
296247
LifetimeData::Static.intern(&Interner)
297248
}

crates/hir_ty/src/mapping.rs

Lines changed: 56 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@
55
66
use chalk_solve::rust_ir;
77

8-
use base_db::salsa::InternKey;
9-
use hir_def::TypeAliasId;
8+
use base_db::salsa::{self, InternKey};
9+
use hir_def::{ConstParamId, LifetimeParamId, TraitId, TypeAliasId, TypeParamId};
1010

11-
use crate::{chalk_db, db::HirDatabase, CallableDefId, FnDefId, Interner, OpaqueTyId};
11+
use crate::{
12+
chalk_db, db::HirDatabase, AssocTypeId, CallableDefId, ChalkTraitId, FnDefId, ForeignDefId,
13+
Interner, OpaqueTyId, PlaceholderIndex,
14+
};
1215

1316
pub(crate) trait ToChalk {
1417
type Chalk;
@@ -23,18 +26,6 @@ where
2326
T::from_chalk(db, chalk)
2427
}
2528

26-
impl ToChalk for hir_def::TraitId {
27-
type Chalk = chalk_db::TraitId;
28-
29-
fn to_chalk(self, _db: &dyn HirDatabase) -> chalk_db::TraitId {
30-
chalk_ir::TraitId(self.as_intern_id())
31-
}
32-
33-
fn from_chalk(_db: &dyn HirDatabase, trait_id: chalk_db::TraitId) -> hir_def::TraitId {
34-
InternKey::from_intern_id(trait_id.0)
35-
}
36-
}
37-
3829
impl ToChalk for hir_def::ImplId {
3930
type Chalk = chalk_db::ImplId;
4031

@@ -111,3 +102,53 @@ impl From<crate::db::InternedClosureId> for chalk_ir::ClosureId<Interner> {
111102
chalk_ir::ClosureId(id.as_intern_id())
112103
}
113104
}
105+
106+
pub fn to_foreign_def_id(id: TypeAliasId) -> ForeignDefId {
107+
chalk_ir::ForeignDefId(salsa::InternKey::as_intern_id(&id))
108+
}
109+
110+
pub fn from_foreign_def_id(id: ForeignDefId) -> TypeAliasId {
111+
salsa::InternKey::from_intern_id(id.0)
112+
}
113+
114+
pub fn to_assoc_type_id(id: TypeAliasId) -> AssocTypeId {
115+
chalk_ir::AssocTypeId(salsa::InternKey::as_intern_id(&id))
116+
}
117+
118+
pub fn from_assoc_type_id(id: AssocTypeId) -> TypeAliasId {
119+
salsa::InternKey::from_intern_id(id.0)
120+
}
121+
122+
pub fn from_placeholder_idx(db: &dyn HirDatabase, idx: PlaceholderIndex) -> TypeParamId {
123+
assert_eq!(idx.ui, chalk_ir::UniverseIndex::ROOT);
124+
let interned_id = salsa::InternKey::from_intern_id(salsa::InternId::from(idx.idx));
125+
db.lookup_intern_type_param_id(interned_id)
126+
}
127+
128+
pub fn to_placeholder_idx(db: &dyn HirDatabase, id: TypeParamId) -> PlaceholderIndex {
129+
let interned_id = db.intern_type_param_id(id);
130+
PlaceholderIndex {
131+
ui: chalk_ir::UniverseIndex::ROOT,
132+
idx: salsa::InternKey::as_intern_id(&interned_id).as_usize(),
133+
}
134+
}
135+
136+
pub fn lt_from_placeholder_idx(db: &dyn HirDatabase, idx: PlaceholderIndex) -> LifetimeParamId {
137+
assert_eq!(idx.ui, chalk_ir::UniverseIndex::ROOT);
138+
let interned_id = salsa::InternKey::from_intern_id(salsa::InternId::from(idx.idx));
139+
db.lookup_intern_lifetime_param_id(interned_id)
140+
}
141+
142+
pub fn const_from_placeholder_idx(db: &dyn HirDatabase, idx: PlaceholderIndex) -> ConstParamId {
143+
assert_eq!(idx.ui, chalk_ir::UniverseIndex::ROOT);
144+
let interned_id = salsa::InternKey::from_intern_id(salsa::InternId::from(idx.idx));
145+
db.lookup_intern_const_param_id(interned_id)
146+
}
147+
148+
pub fn to_chalk_trait_id(id: TraitId) -> ChalkTraitId {
149+
chalk_ir::TraitId(salsa::InternKey::as_intern_id(&id))
150+
}
151+
152+
pub fn from_chalk_trait_id(id: ChalkTraitId) -> TraitId {
153+
salsa::InternKey::from_intern_id(id.0)
154+
}

crates/hir_ty/src/tls.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ use chalk_ir::{AliasTy, GenericArg, Goal, Goals, Lifetime, ProgramClauseImplicat
55
use itertools::Itertools;
66

77
use crate::{
8-
chalk_db, db::HirDatabase, from_assoc_type_id, mapping::from_chalk, CallableDefId, Interner,
8+
chalk_db, db::HirDatabase, from_assoc_type_id, from_chalk_trait_id, mapping::from_chalk,
9+
CallableDefId, Interner,
910
};
1011
use hir_def::{AdtId, AssocContainerId, Lookup, TypeAliasId};
1112

@@ -32,7 +33,7 @@ impl DebugContext<'_> {
3233
id: chalk_db::TraitId,
3334
fmt: &mut fmt::Formatter<'_>,
3435
) -> Result<(), fmt::Error> {
35-
let trait_: hir_def::TraitId = from_chalk(self.0, id);
36+
let trait_: hir_def::TraitId = from_chalk_trait_id(id);
3637
let trait_data = self.0.trait_data(trait_);
3738
write!(fmt, "{}", trait_data.name)
3839
}

0 commit comments

Comments
 (0)