Skip to content

Commit aa45561

Browse files
committed
Crate -> CrateId
1 parent d652e1e commit aa45561

File tree

4 files changed

+37
-35
lines changed

4 files changed

+37
-35
lines changed

crates/ra_hir/src/db.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use crate::{
1313
CallableDef, FnSig, GenericPredicate, InferenceResult, Substs, Ty, TyDefId, TypeCtor,
1414
ValueTyDefId,
1515
},
16-
Crate, DefWithBody, ImplBlock,
16+
DefWithBody, ImplBlock,
1717
};
1818

1919
pub use hir_def::db::{
@@ -71,7 +71,7 @@ pub trait HirDatabase: DefDatabase {
7171
/// Mutex and the query does an untracked read internally, to make sure the
7272
/// cached state is thrown away when input facts change.
7373
#[salsa::invoke(crate::ty::traits::trait_solver_query)]
74-
fn trait_solver(&self, krate: Crate) -> crate::ty::traits::TraitSolver;
74+
fn trait_solver(&self, krate: CrateId) -> crate::ty::traits::TraitSolver;
7575

7676
// Interned IDs for Chalk integration
7777
#[salsa::interned]
@@ -93,35 +93,35 @@ pub trait HirDatabase: DefDatabase {
9393
#[salsa::invoke(crate::ty::traits::chalk::trait_datum_query)]
9494
fn trait_datum(
9595
&self,
96-
krate: Crate,
96+
krate: CrateId,
9797
trait_id: chalk_ir::TraitId,
9898
) -> Arc<chalk_rust_ir::TraitDatum<chalk_ir::family::ChalkIr>>;
9999

100100
#[salsa::invoke(crate::ty::traits::chalk::struct_datum_query)]
101101
fn struct_datum(
102102
&self,
103-
krate: Crate,
103+
krate: CrateId,
104104
struct_id: chalk_ir::StructId,
105105
) -> Arc<chalk_rust_ir::StructDatum<chalk_ir::family::ChalkIr>>;
106106

107107
#[salsa::invoke(crate::ty::traits::chalk::impl_datum_query)]
108108
fn impl_datum(
109109
&self,
110-
krate: Crate,
110+
krate: CrateId,
111111
impl_id: chalk_ir::ImplId,
112112
) -> Arc<chalk_rust_ir::ImplDatum<chalk_ir::family::ChalkIr>>;
113113

114114
#[salsa::invoke(crate::ty::traits::chalk::associated_ty_value_query)]
115115
fn associated_ty_value(
116116
&self,
117-
krate: Crate,
117+
krate: CrateId,
118118
id: chalk_rust_ir::AssociatedTyValueId,
119119
) -> Arc<chalk_rust_ir::AssociatedTyValue<chalk_ir::family::ChalkIr>>;
120120

121121
#[salsa::invoke(crate::ty::traits::trait_solve_query)]
122122
fn trait_solve(
123123
&self,
124-
krate: Crate,
124+
krate: CrateId,
125125
goal: crate::ty::Canonical<crate::ty::InEnvironment<crate::ty::Obligation>>,
126126
) -> Option<crate::ty::traits::Solution>;
127127
}

crates/ra_hir/src/ty.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,12 @@ use hir_def::{
2323
GenericDefId, HasModule, Lookup, TraitId, TypeAliasId,
2424
};
2525
use hir_expand::name::Name;
26-
use ra_db::{impl_intern_key, salsa};
26+
use ra_db::{impl_intern_key, salsa, CrateId};
2727

2828
use crate::{
2929
db::HirDatabase,
3030
ty::primitive::{FloatTy, IntTy, Uncertain},
3131
util::make_mut_slice,
32-
Crate,
3332
};
3433
use display::{HirDisplay, HirFormatter};
3534

@@ -162,7 +161,7 @@ impl TypeCtor {
162161
}
163162
}
164163

165-
pub fn krate(self, db: &impl HirDatabase) -> Option<Crate> {
164+
pub fn krate(self, db: &impl HirDatabase) -> Option<CrateId> {
166165
match self {
167166
TypeCtor::Bool
168167
| TypeCtor::Char
@@ -178,11 +177,9 @@ impl TypeCtor {
178177
| TypeCtor::Tuple { .. } => None,
179178
// Closure's krate is irrelevant for coherence I would think?
180179
TypeCtor::Closure { .. } => None,
181-
TypeCtor::Adt(adt) => Some(adt.module(db).krate.into()),
182-
TypeCtor::FnDef(callable) => Some(callable.krate(db).into()),
183-
TypeCtor::AssociatedType(type_alias) => {
184-
Some(type_alias.lookup(db).module(db).krate.into())
185-
}
180+
TypeCtor::Adt(adt) => Some(adt.module(db).krate),
181+
TypeCtor::FnDef(callable) => Some(callable.krate(db)),
182+
TypeCtor::AssociatedType(type_alias) => Some(type_alias.lookup(db).module(db).krate),
186183
}
187184
}
188185

crates/ra_hir/src/ty/traits.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use ra_db::{impl_intern_key, salsa, CrateId};
88
use ra_prof::profile;
99
use rustc_hash::FxHashSet;
1010

11-
use crate::{db::HirDatabase, Crate, ImplBlock, TypeAlias};
11+
use crate::{db::HirDatabase, ImplBlock, TypeAlias};
1212

1313
use super::{Canonical, GenericPredicate, HirDisplay, ProjectionTy, TraitRef, Ty, TypeWalk};
1414

@@ -18,7 +18,7 @@ pub(crate) mod chalk;
1818

1919
#[derive(Debug, Clone)]
2020
pub struct TraitSolver {
21-
krate: Crate,
21+
krate: CrateId,
2222
inner: Arc<Mutex<chalk_solve::Solver<ChalkIr>>>,
2323
}
2424

@@ -60,12 +60,12 @@ const CHALK_SOLVER_MAX_SIZE: usize = 4;
6060
#[derive(Debug, Copy, Clone)]
6161
struct ChalkContext<'a, DB> {
6262
db: &'a DB,
63-
krate: Crate,
63+
krate: CrateId,
6464
}
6565

6666
pub(crate) fn trait_solver_query(
6767
db: &(impl HirDatabase + salsa::Database),
68-
krate: Crate,
68+
krate: CrateId,
6969
) -> TraitSolver {
7070
db.salsa_runtime().report_untracked_read();
7171
// krate parameter is just so we cache a unique solver per crate
@@ -176,7 +176,7 @@ impl TypeWalk for ProjectionPredicate {
176176
/// Solve a trait goal using Chalk.
177177
pub(crate) fn trait_solve_query(
178178
db: &impl HirDatabase,
179-
krate: Crate,
179+
krate: CrateId,
180180
goal: Canonical<InEnvironment<Obligation>>,
181181
) -> Option<Solution> {
182182
let _p = profile("trait_solve_query");

crates/ra_hir/src/ty/traits/chalk.rs

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use chalk_ir::{
88
TypeKindId, TypeName, UniverseIndex,
99
};
1010
use chalk_rust_ir::{AssociatedTyDatum, AssociatedTyValue, ImplDatum, StructDatum, TraitDatum};
11+
use ra_db::CrateId;
1112

1213
use hir_def::{
1314
lang_item::LangItemTarget, AstItemDef, ContainerId, GenericDefId, Lookup, TraitId, TypeAliasId,
@@ -21,7 +22,7 @@ use crate::{
2122
db::HirDatabase,
2223
ty::display::HirDisplay,
2324
ty::{ApplicationTy, GenericPredicate, ProjectionTy, Substs, TraitRef, Ty, TypeCtor, TypeWalk},
24-
Crate, ImplBlock, TypeAlias,
25+
ImplBlock, TypeAlias,
2526
};
2627

2728
/// This represents a trait whose name we could not resolve.
@@ -448,7 +449,7 @@ where
448449
let trait_: TraitId = from_chalk(self.db, trait_id);
449450
let mut result: Vec<_> = self
450451
.db
451-
.impls_for_trait(self.krate.crate_id, trait_.into())
452+
.impls_for_trait(self.krate, trait_.into())
452453
.iter()
453454
.copied()
454455
.map(Impl::ImplBlock)
@@ -487,7 +488,7 @@ where
487488
&self,
488489
id: chalk_rust_ir::AssociatedTyValueId,
489490
) -> Arc<AssociatedTyValue<ChalkIr>> {
490-
self.db.associated_ty_value(self.krate, id)
491+
self.db.associated_ty_value(self.krate.into(), id)
491492
}
492493
fn custom_clauses(&self) -> Vec<chalk_ir::ProgramClause<ChalkIr>> {
493494
vec![]
@@ -528,7 +529,7 @@ pub(crate) fn associated_ty_data_query(
528529

529530
pub(crate) fn trait_datum_query(
530531
db: &impl HirDatabase,
531-
krate: Crate,
532+
krate: CrateId,
532533
trait_id: chalk_ir::TraitId,
533534
) -> Arc<TraitDatum<ChalkIr>> {
534535
debug!("trait_datum {:?}", trait_id);
@@ -557,7 +558,7 @@ pub(crate) fn trait_datum_query(
557558
let bound_vars = Substs::bound_vars(&generic_params);
558559
let flags = chalk_rust_ir::TraitFlags {
559560
auto: trait_data.auto,
560-
upstream: trait_.module(db).krate != krate.crate_id,
561+
upstream: trait_.module(db).krate != krate,
561562
non_enumerable: true,
562563
coinductive: false, // only relevant for Chalk testing
563564
// FIXME set these flags correctly
@@ -579,7 +580,7 @@ pub(crate) fn trait_datum_query(
579580

580581
pub(crate) fn struct_datum_query(
581582
db: &impl HirDatabase,
582-
krate: Crate,
583+
krate: CrateId,
583584
struct_id: chalk_ir::StructId,
584585
) -> Arc<StructDatum<ChalkIr>> {
585586
debug!("struct_datum {:?}", struct_id);
@@ -611,7 +612,7 @@ pub(crate) fn struct_datum_query(
611612

612613
pub(crate) fn impl_datum_query(
613614
db: &impl HirDatabase,
614-
krate: Crate,
615+
krate: CrateId,
615616
impl_id: ImplId,
616617
) -> Arc<ImplDatum<ChalkIr>> {
617618
let _p = ra_prof::profile("impl_datum");
@@ -626,15 +627,15 @@ pub(crate) fn impl_datum_query(
626627

627628
fn impl_block_datum(
628629
db: &impl HirDatabase,
629-
krate: Crate,
630+
krate: CrateId,
630631
impl_id: ImplId,
631632
impl_block: ImplBlock,
632633
) -> Option<Arc<ImplDatum<ChalkIr>>> {
633634
let generic_params = db.generic_params(impl_block.id.into());
634635
let bound_vars = Substs::bound_vars(&generic_params);
635636
let trait_ref = impl_block.target_trait_ref(db)?.subst(&bound_vars);
636637
let trait_ = trait_ref.trait_;
637-
let impl_type = if impl_block.krate(db) == krate {
638+
let impl_type = if impl_block.krate(db).crate_id == krate {
638639
chalk_rust_ir::ImplType::Local
639640
} else {
640641
chalk_rust_ir::ImplType::External
@@ -698,7 +699,7 @@ fn invalid_impl_datum() -> Arc<ImplDatum<ChalkIr>> {
698699

699700
fn closure_fn_trait_impl_datum(
700701
db: &impl HirDatabase,
701-
krate: Crate,
702+
krate: CrateId,
702703
data: super::ClosureFnTraitImplData,
703704
) -> Option<Arc<ImplDatum<ChalkIr>>> {
704705
// for some closure |X, Y| -> Z:
@@ -755,7 +756,7 @@ fn closure_fn_trait_impl_datum(
755756

756757
pub(crate) fn associated_ty_value_query(
757758
db: &impl HirDatabase,
758-
krate: Crate,
759+
krate: CrateId,
759760
id: chalk_rust_ir::AssociatedTyValueId,
760761
) -> Arc<chalk_rust_ir::AssociatedTyValue<ChalkIr>> {
761762
let data: AssocTyValue = from_chalk(db, id);
@@ -771,7 +772,7 @@ pub(crate) fn associated_ty_value_query(
771772

772773
fn type_alias_associated_ty_value(
773774
db: &impl HirDatabase,
774-
_krate: Crate,
775+
_krate: CrateId,
775776
type_alias: TypeAlias,
776777
) -> Arc<AssociatedTyValue<ChalkIr>> {
777778
let impl_block = type_alias.impl_block(db).expect("assoc ty value should be in impl");
@@ -798,7 +799,7 @@ fn type_alias_associated_ty_value(
798799

799800
fn closure_fn_trait_output_assoc_ty_value(
800801
db: &impl HirDatabase,
801-
krate: Crate,
802+
krate: CrateId,
802803
data: super::ClosureFnTraitImplData,
803804
) -> Arc<AssociatedTyValue<ChalkIr>> {
804805
let impl_id = Impl::ClosureFnTraitImpl(data.clone()).to_chalk(db);
@@ -831,8 +832,12 @@ fn closure_fn_trait_output_assoc_ty_value(
831832
Arc::new(value)
832833
}
833834

834-
fn get_fn_trait(db: &impl HirDatabase, krate: Crate, fn_trait: super::FnTrait) -> Option<TraitId> {
835-
let target = db.lang_item(krate.crate_id, fn_trait.lang_item_name().into())?;
835+
fn get_fn_trait(
836+
db: &impl HirDatabase,
837+
krate: CrateId,
838+
fn_trait: super::FnTrait,
839+
) -> Option<TraitId> {
840+
let target = db.lang_item(krate, fn_trait.lang_item_name().into())?;
836841
match target {
837842
LangItemTarget::TraitId(t) => Some(t),
838843
_ => None,

0 commit comments

Comments
 (0)