Skip to content

Commit f1551a9

Browse files
authored
Merge pull request #19496 from Veykril/push-zuwsrswwtzsu
chore: Replace some `invoke`s with `invoke_actual` in hir-ty
2 parents df0174e + bcc8e3a commit f1551a9

File tree

10 files changed

+81
-74
lines changed

10 files changed

+81
-74
lines changed

crates/hir-ty/src/chalk_db.rs

+19-19
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use hir_def::{
2121
};
2222

2323
use crate::{
24-
AliasEq, AliasTy, BoundVar, DebruijnIndex, FnDefId, Interner, ProjectionTy, ProjectionTyExt,
24+
AliasEq, AliasTy, BoundVar, DebruijnIndex, Interner, ProjectionTy, ProjectionTyExt,
2525
QuantifiedWhereClause, Substitution, TraitRef, TraitRefExt, Ty, TyBuilder, TyExt, TyKind,
2626
WhereClause,
2727
db::{HirDatabase, InternedCoroutine},
@@ -53,7 +53,7 @@ pub(crate) type Variances = chalk_ir::Variances<Interner>;
5353

5454
impl chalk_solve::RustIrDatabase<Interner> for ChalkContext<'_> {
5555
fn associated_ty_data(&self, id: AssocTypeId) -> Arc<AssociatedTyDatum> {
56-
self.db.associated_ty_data(id)
56+
self.db.associated_ty_data(from_assoc_type_id(id))
5757
}
5858
fn trait_datum(&self, trait_id: TraitId) -> Arc<TraitDatum> {
5959
self.db.trait_datum(self.krate, trait_id)
@@ -105,7 +105,7 @@ impl chalk_solve::RustIrDatabase<Interner> for ChalkContext<'_> {
105105
&self,
106106
fn_def_id: chalk_ir::FnDefId<Interner>,
107107
) -> Arc<rust_ir::FnDefDatum<Interner>> {
108-
self.db.fn_def_datum(fn_def_id)
108+
self.db.fn_def_datum(from_chalk(self.db, fn_def_id))
109109
}
110110

111111
fn impls_for_trait(
@@ -447,7 +447,7 @@ impl chalk_solve::RustIrDatabase<Interner> for ChalkContext<'_> {
447447
Arc::new(rust_ir::AdtSizeAlign::from_one_zst(false))
448448
}
449449
fn assoc_type_name(&self, assoc_ty_id: chalk_ir::AssocTypeId<Interner>) -> String {
450-
let id = self.db.associated_ty_data(assoc_ty_id).name;
450+
let id = self.db.associated_ty_data(from_assoc_type_id(assoc_ty_id)).name;
451451
self.db.type_alias_data(id).name.display(self.db.upcast(), self.edition()).to_string()
452452
}
453453
fn opaque_type_name(&self, opaque_ty_id: chalk_ir::OpaqueTyId<Interner>) -> String {
@@ -583,11 +583,11 @@ impl chalk_ir::UnificationDatabase<Interner> for &dyn HirDatabase {
583583
&self,
584584
fn_def_id: chalk_ir::FnDefId<Interner>,
585585
) -> chalk_ir::Variances<Interner> {
586-
HirDatabase::fn_def_variance(*self, fn_def_id)
586+
HirDatabase::fn_def_variance(*self, from_chalk(*self, fn_def_id))
587587
}
588588

589589
fn adt_variance(&self, adt_id: chalk_ir::AdtId<Interner>) -> chalk_ir::Variances<Interner> {
590-
HirDatabase::adt_variance(*self, adt_id)
590+
HirDatabase::adt_variance(*self, adt_id.0)
591591
}
592592
}
593593

@@ -602,10 +602,9 @@ pub(crate) fn program_clauses_for_chalk_env_query(
602602

603603
pub(crate) fn associated_ty_data_query(
604604
db: &dyn HirDatabase,
605-
id: AssocTypeId,
605+
type_alias: TypeAliasId,
606606
) -> Arc<AssociatedTyDatum> {
607-
debug!("associated_ty_data {:?}", id);
608-
let type_alias: TypeAliasId = from_assoc_type_id(id);
607+
debug!("associated_ty_data {:?}", type_alias);
609608
let trait_ = match type_alias.lookup(db.upcast()).container {
610609
ItemContainerId::TraitId(t) => t,
611610
_ => panic!("associated type not in trait"),
@@ -656,7 +655,7 @@ pub(crate) fn associated_ty_data_query(
656655
let bound_data = rust_ir::AssociatedTyDatumBound { bounds, where_clauses: vec![] };
657656
let datum = AssociatedTyDatum {
658657
trait_id: to_chalk_trait_id(trait_),
659-
id,
658+
id: to_assoc_type_id(type_alias),
660659
name: type_alias,
661660
binders: make_binders(db, &generic_params, bound_data),
662661
};
@@ -923,8 +922,10 @@ fn type_alias_associated_ty_value(
923922
Arc::new(value)
924923
}
925924

926-
pub(crate) fn fn_def_datum_query(db: &dyn HirDatabase, fn_def_id: FnDefId) -> Arc<FnDefDatum> {
927-
let callable_def: CallableDefId = from_chalk(db, fn_def_id);
925+
pub(crate) fn fn_def_datum_query(
926+
db: &dyn HirDatabase,
927+
callable_def: CallableDefId,
928+
) -> Arc<FnDefDatum> {
928929
let generic_def = GenericDefId::from_callable(db.upcast(), callable_def);
929930
let generic_params = generics(db.upcast(), generic_def);
930931
let (sig, binders) = db.callable_item_signature(callable_def).into_value_and_skipped_binders();
@@ -943,7 +944,7 @@ pub(crate) fn fn_def_datum_query(db: &dyn HirDatabase, fn_def_id: FnDefId) -> Ar
943944
where_clauses,
944945
};
945946
let datum = FnDefDatum {
946-
id: fn_def_id,
947+
id: callable_def.to_chalk(db),
947948
sig: chalk_ir::FnSig {
948949
abi: sig.abi,
949950
safety: chalk_ir::Safety::Safe,
@@ -954,8 +955,10 @@ pub(crate) fn fn_def_datum_query(db: &dyn HirDatabase, fn_def_id: FnDefId) -> Ar
954955
Arc::new(datum)
955956
}
956957

957-
pub(crate) fn fn_def_variance_query(db: &dyn HirDatabase, fn_def_id: FnDefId) -> Variances {
958-
let callable_def: CallableDefId = from_chalk(db, fn_def_id);
958+
pub(crate) fn fn_def_variance_query(
959+
db: &dyn HirDatabase,
960+
callable_def: CallableDefId,
961+
) -> Variances {
959962
Variances::from_iter(
960963
Interner,
961964
db.variances_of(GenericDefId::from_callable(db.upcast(), callable_def))
@@ -971,10 +974,7 @@ pub(crate) fn fn_def_variance_query(db: &dyn HirDatabase, fn_def_id: FnDefId) ->
971974
)
972975
}
973976

974-
pub(crate) fn adt_variance_query(
975-
db: &dyn HirDatabase,
976-
chalk_ir::AdtId(adt_id): AdtId,
977-
) -> Variances {
977+
pub(crate) fn adt_variance_query(db: &dyn HirDatabase, adt_id: hir_def::AdtId) -> Variances {
978978
Variances::from_iter(
979979
Interner,
980980
db.variances_of(adt_id.into()).as_deref().unwrap_or_default().iter().map(|v| match v {

crates/hir-ty/src/db.rs

+16-18
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ use smallvec::SmallVec;
1717
use triomphe::Arc;
1818

1919
use crate::{
20-
Binders, ClosureId, Const, FnDefId, ImplTraitId, ImplTraits, InferenceResult, Interner,
21-
PolyFnSig, Substitution, TraitEnvironment, TraitRef, Ty, TyDefId, ValueTyDefId, chalk_db,
20+
Binders, Const, ImplTraitId, ImplTraits, InferenceResult, Interner, PolyFnSig, Substitution,
21+
TraitEnvironment, TraitRef, Ty, TyDefId, ValueTyDefId, chalk_db,
2222
consteval::ConstEvalError,
2323
drop::DropGlue,
2424
dyn_compatibility::DynCompatibilityViolation,
@@ -39,8 +39,8 @@ pub trait HirDatabase: DefDatabase + Upcast<dyn DefDatabase> + std::fmt::Debug {
3939
#[salsa::cycle(crate::mir::mir_body_recover)]
4040
fn mir_body(&self, def: DefWithBodyId) -> Result<Arc<MirBody>, MirLowerError>;
4141

42-
#[salsa::invoke(crate::mir::mir_body_for_closure_query)]
43-
fn mir_body_for_closure(&self, def: ClosureId) -> Result<Arc<MirBody>, MirLowerError>;
42+
#[salsa::invoke_actual(crate::mir::mir_body_for_closure_query)]
43+
fn mir_body_for_closure(&self, def: InternedClosureId) -> Result<Arc<MirBody>, MirLowerError>;
4444

4545
#[salsa::invoke(crate::mir::monomorphized_mir_body_query)]
4646
#[salsa::cycle(crate::mir::monomorphized_mir_body_recover)]
@@ -54,12 +54,12 @@ pub trait HirDatabase: DefDatabase + Upcast<dyn DefDatabase> + std::fmt::Debug {
5454
#[salsa::invoke(crate::mir::monomorphized_mir_body_for_closure_query)]
5555
fn monomorphized_mir_body_for_closure(
5656
&self,
57-
def: ClosureId,
57+
def: InternedClosureId,
5858
subst: Substitution,
5959
env: Arc<TraitEnvironment>,
6060
) -> Result<Arc<MirBody>, MirLowerError>;
6161

62-
#[salsa::invoke(crate::mir::borrowck_query)]
62+
#[salsa::invoke_actual(crate::mir::borrowck_query)]
6363
#[salsa::lru(2024)]
6464
fn borrowck(&self, def: DefWithBodyId) -> Result<Arc<[BorrowckResult]>, MirLowerError>;
6565

@@ -110,9 +110,10 @@ pub trait HirDatabase: DefDatabase + Upcast<dyn DefDatabase> + std::fmt::Debug {
110110
fn dyn_compatibility_of_trait(&self, trait_: TraitId) -> Option<DynCompatibilityViolation>;
111111

112112
#[salsa::invoke(crate::lower::ty_query)]
113-
#[salsa::cycle(crate::lower::ty_recover)]
113+
#[salsa::transparent]
114114
fn ty(&self, def: TyDefId) -> Binders<Ty>;
115115

116+
#[salsa::cycle(crate::lower::type_for_type_alias_with_diagnostics_query_recover)]
116117
#[salsa::invoke_actual(crate::lower::type_for_type_alias_with_diagnostics_query)]
117118
fn type_for_type_alias_with_diagnostics(&self, def: TypeAliasId) -> (Binders<Ty>, Diagnostics);
118119

@@ -244,11 +245,8 @@ pub trait HirDatabase: DefDatabase + Upcast<dyn DefDatabase> + std::fmt::Debug {
244245
#[salsa::interned]
245246
fn intern_coroutine(&self, id: InternedCoroutine) -> InternedCoroutineId;
246247

247-
#[salsa::invoke(chalk_db::associated_ty_data_query)]
248-
fn associated_ty_data(
249-
&self,
250-
id: chalk_db::AssocTypeId,
251-
) -> sync::Arc<chalk_db::AssociatedTyDatum>;
248+
#[salsa::invoke_actual(chalk_db::associated_ty_data_query)]
249+
fn associated_ty_data(&self, id: TypeAliasId) -> sync::Arc<chalk_db::AssociatedTyDatum>;
252250

253251
#[salsa::invoke(chalk_db::trait_datum_query)]
254252
fn trait_datum(
@@ -264,14 +262,14 @@ pub trait HirDatabase: DefDatabase + Upcast<dyn DefDatabase> + std::fmt::Debug {
264262
fn impl_datum(&self, krate: Crate, impl_id: chalk_db::ImplId)
265263
-> sync::Arc<chalk_db::ImplDatum>;
266264

267-
#[salsa::invoke(chalk_db::fn_def_datum_query)]
268-
fn fn_def_datum(&self, fn_def_id: FnDefId) -> sync::Arc<chalk_db::FnDefDatum>;
265+
#[salsa::invoke_actual(chalk_db::fn_def_datum_query)]
266+
fn fn_def_datum(&self, fn_def_id: CallableDefId) -> sync::Arc<chalk_db::FnDefDatum>;
269267

270-
#[salsa::invoke(chalk_db::fn_def_variance_query)]
271-
fn fn_def_variance(&self, fn_def_id: FnDefId) -> chalk_db::Variances;
268+
#[salsa::invoke_actual(chalk_db::fn_def_variance_query)]
269+
fn fn_def_variance(&self, fn_def_id: CallableDefId) -> chalk_db::Variances;
272270

273-
#[salsa::invoke(chalk_db::adt_variance_query)]
274-
fn adt_variance(&self, adt_id: chalk_db::AdtId) -> chalk_db::Variances;
271+
#[salsa::invoke_actual(chalk_db::adt_variance_query)]
272+
fn adt_variance(&self, adt_id: AdtId) -> chalk_db::Variances;
275273

276274
#[salsa::invoke_actual(crate::variance::variances_of)]
277275
#[salsa::cycle(crate::variance::variances_of_cycle)]

crates/hir-ty/src/dyn_compatibility.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use crate::{
2222
from_assoc_type_id, from_chalk_trait_id,
2323
generics::{generics, trait_self_param_idx},
2424
lower::callable_item_sig,
25-
to_assoc_type_id, to_chalk_trait_id,
25+
to_chalk_trait_id,
2626
utils::elaborate_clause_supertraits,
2727
};
2828

@@ -171,8 +171,7 @@ fn bounds_reference_self(db: &dyn HirDatabase, trait_: TraitId) -> bool {
171171
.iter()
172172
.filter_map(|(_, it)| match *it {
173173
AssocItemId::TypeAliasId(id) => {
174-
let assoc_ty_id = to_assoc_type_id(id);
175-
let assoc_ty_data = db.associated_ty_data(assoc_ty_id);
174+
let assoc_ty_data = db.associated_ty_data(id);
176175
Some(assoc_ty_data)
177176
}
178177
_ => None,

crates/hir-ty/src/infer/closure.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use crate::{
3131
DynTyExt, FnAbi, FnPointer, FnSig, Interner, OpaqueTy, ProjectionTyExt, Substitution, Ty,
3232
TyExt, WhereClause,
3333
db::{HirDatabase, InternedClosure},
34-
error_lifetime, from_chalk_trait_id, from_placeholder_idx,
34+
error_lifetime, from_assoc_type_id, from_chalk_trait_id, from_placeholder_idx,
3535
generics::Generics,
3636
infer::coerce::CoerceNever,
3737
make_binders,
@@ -153,7 +153,8 @@ impl InferenceContext<'_> {
153153
if let WhereClause::AliasEq(AliasEq { alias: AliasTy::Projection(projection), ty }) =
154154
bound.skip_binders()
155155
{
156-
let assoc_data = self.db.associated_ty_data(projection.associated_ty_id);
156+
let assoc_data =
157+
self.db.associated_ty_data(from_assoc_type_id(projection.associated_ty_id));
157158
if !fn_traits.contains(&assoc_data.trait_id) {
158159
return None;
159160
}

crates/hir-ty/src/lower.rs

+24-15
Original file line numberDiff line numberDiff line change
@@ -1560,6 +1560,20 @@ fn type_for_enum_variant_constructor(
15601560
}
15611561
}
15621562

1563+
#[salsa::tracked(recovery_fn = type_for_adt_recovery)]
1564+
fn type_for_adt_tracked(db: &dyn HirDatabase, adt: AdtId) -> Binders<Ty> {
1565+
type_for_adt(db, adt)
1566+
}
1567+
1568+
pub(crate) fn type_for_adt_recovery(
1569+
db: &dyn HirDatabase,
1570+
_cycle: &salsa::Cycle,
1571+
adt: AdtId,
1572+
) -> Binders<Ty> {
1573+
let generics = generics(db.upcast(), adt.into());
1574+
make_binders(db, &generics, TyKind::Error.intern(Interner))
1575+
}
1576+
15631577
fn type_for_adt(db: &dyn HirDatabase, adt: AdtId) -> Binders<Ty> {
15641578
let generics = generics(db.upcast(), adt.into());
15651579
let subst = generics.bound_vars_subst(db, DebruijnIndex::INNERMOST);
@@ -1589,6 +1603,15 @@ pub(crate) fn type_for_type_alias_with_diagnostics_query(
15891603
(make_binders(db, &generics, inner), create_diagnostics(ctx.diagnostics))
15901604
}
15911605

1606+
pub(crate) fn type_for_type_alias_with_diagnostics_query_recover(
1607+
db: &dyn HirDatabase,
1608+
_cycle: &salsa::Cycle,
1609+
adt: TypeAliasId,
1610+
) -> (Binders<Ty>, Diagnostics) {
1611+
let generics = generics(db.upcast(), adt.into());
1612+
(make_binders(db, &generics, TyKind::Error.intern(Interner)), None)
1613+
}
1614+
15921615
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
15931616
pub enum TyDefId {
15941617
BuiltinType(BuiltinType),
@@ -1628,25 +1651,11 @@ impl ValueTyDefId {
16281651
pub(crate) fn ty_query(db: &dyn HirDatabase, def: TyDefId) -> Binders<Ty> {
16291652
match def {
16301653
TyDefId::BuiltinType(it) => Binders::empty(Interner, TyBuilder::builtin(it)),
1631-
TyDefId::AdtId(it) => type_for_adt(db, it),
1654+
TyDefId::AdtId(it) => type_for_adt_tracked(db, it),
16321655
TyDefId::TypeAliasId(it) => db.type_for_type_alias_with_diagnostics(it).0,
16331656
}
16341657
}
16351658

1636-
pub(crate) fn ty_recover(
1637-
db: &dyn HirDatabase,
1638-
_cycle: &salsa::Cycle,
1639-
_: HirDatabaseData,
1640-
def: TyDefId,
1641-
) -> Binders<Ty> {
1642-
let generics = match def {
1643-
TyDefId::BuiltinType(_) => return Binders::empty(Interner, TyKind::Error.intern(Interner)),
1644-
TyDefId::AdtId(it) => generics(db.upcast(), it.into()),
1645-
TyDefId::TypeAliasId(it) => generics(db.upcast(), it.into()),
1646-
};
1647-
make_binders(db, &generics, TyKind::Error.intern(Interner))
1648-
}
1649-
16501659
pub(crate) fn value_ty_query(db: &dyn HirDatabase, def: ValueTyDefId) -> Option<Binders<Ty>> {
16511660
match def {
16521661
ValueTyDefId::FunctionId(it) => Some(type_for_fn(db, it)),

crates/hir-ty/src/mir/borrowck.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ fn all_mir_bodies(
7171
c: ClosureId,
7272
cb: &mut impl FnMut(Arc<MirBody>),
7373
) -> Result<(), MirLowerError> {
74-
match db.mir_body_for_closure(c) {
74+
match db.mir_body_for_closure(c.into()) {
7575
Ok(body) => {
7676
cb(body.clone());
7777
body.closures.iter().try_for_each(|&it| for_closure(db, it, cb))

crates/hir-ty/src/mir/eval.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2452,7 +2452,7 @@ impl Evaluator<'_> {
24522452
let mir_body = self
24532453
.db
24542454
.monomorphized_mir_body_for_closure(
2455-
closure,
2455+
closure.into(),
24562456
generic_args.clone(),
24572457
self.trait_env.clone(),
24582458
)

crates/hir-ty/src/mir/lower.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use triomphe::Arc;
2929
use crate::{
3030
Adjust, Adjustment, AutoBorrow, CallableDefId, TyBuilder, TyExt,
3131
consteval::ConstEvalError,
32-
db::{HirDatabase, InternedClosure},
32+
db::{HirDatabase, InternedClosure, InternedClosureId},
3333
display::{DisplayTarget, HirDisplay, hir_display_with_types_map},
3434
error_lifetime,
3535
generics::generics,
@@ -38,12 +38,12 @@ use crate::{
3838
layout::LayoutError,
3939
mapping::ToChalk,
4040
mir::{
41-
AggregateKind, Arena, BasicBlock, BasicBlockId, BinOp, BorrowKind, CastKind, ClosureId,
42-
ConstScalar, Either, Expr, FieldId, Idx, InferenceResult, Interner, Local, LocalId,
43-
MemoryMap, MirBody, MirSpan, Mutability, Operand, Place, PlaceElem, PointerCast,
44-
ProjectionElem, ProjectionStore, RawIdx, Rvalue, Statement, StatementKind, Substitution,
45-
SwitchTargets, Terminator, TerminatorKind, TupleFieldId, Ty, UnOp, VariantId,
46-
intern_const_scalar, return_slot,
41+
AggregateKind, Arena, BasicBlock, BasicBlockId, BinOp, BorrowKind, CastKind, ConstScalar,
42+
Either, Expr, FieldId, Idx, InferenceResult, Interner, Local, LocalId, MemoryMap, MirBody,
43+
MirSpan, Mutability, Operand, Place, PlaceElem, PointerCast, ProjectionElem,
44+
ProjectionStore, RawIdx, Rvalue, Statement, StatementKind, Substitution, SwitchTargets,
45+
Terminator, TerminatorKind, TupleFieldId, Ty, UnOp, VariantId, intern_const_scalar,
46+
return_slot,
4747
},
4848
static_lifetime,
4949
traits::FnTrait,
@@ -2017,9 +2017,9 @@ fn cast_kind(table: &mut InferenceTable<'_>, source_ty: &Ty, target_ty: &Ty) ->
20172017

20182018
pub fn mir_body_for_closure_query(
20192019
db: &dyn HirDatabase,
2020-
closure: ClosureId,
2020+
closure: InternedClosureId,
20212021
) -> Result<Arc<MirBody>> {
2022-
let InternedClosure(owner, expr) = db.lookup_intern_closure(closure.into());
2022+
let InternedClosure(owner, expr) = db.lookup_intern_closure(closure);
20232023
let body = db.body(owner);
20242024
let infer = db.infer(owner);
20252025
let Expr::Closure { args, body: root, .. } = &body[expr] else {
@@ -2028,7 +2028,7 @@ pub fn mir_body_for_closure_query(
20282028
let TyKind::Closure(_, substs) = &infer[expr].kind(Interner) else {
20292029
implementation_error!("closure expression is not closure");
20302030
};
2031-
let (captures, kind) = infer.closure_info(&closure);
2031+
let (captures, kind) = infer.closure_info(&closure.into());
20322032
let mut ctx = MirLowerCtx::new(db, owner, &body, &infer);
20332033
// 0 is return local
20342034
ctx.result.locals.alloc(Local { ty: infer[*root].clone() });

crates/hir-ty/src/mir/monomorphization.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ use hir_def::DefWithBodyId;
1717
use triomphe::Arc;
1818

1919
use crate::{
20-
ClosureId, Const, Interner, ProjectionTy, Substitution, TraitEnvironment, Ty, TyKind,
20+
Const, Interner, ProjectionTy, Substitution, TraitEnvironment, Ty, TyKind,
2121
consteval::{intern_const_scalar, unknown_const},
22-
db::{HirDatabase, HirDatabaseData, InternedClosure},
22+
db::{HirDatabase, HirDatabaseData, InternedClosure, InternedClosureId},
2323
from_placeholder_idx,
2424
generics::{Generics, generics},
2525
infer::normalize,
@@ -326,11 +326,11 @@ pub(crate) fn monomorphized_mir_body_recover(
326326

327327
pub fn monomorphized_mir_body_for_closure_query(
328328
db: &dyn HirDatabase,
329-
closure: ClosureId,
329+
closure: InternedClosureId,
330330
subst: Substitution,
331331
trait_env: Arc<crate::TraitEnvironment>,
332332
) -> Result<Arc<MirBody>, MirLowerError> {
333-
let InternedClosure(owner, _) = db.lookup_intern_closure(closure.into());
333+
let InternedClosure(owner, _) = db.lookup_intern_closure(closure);
334334
let generics = owner.as_generic_def_id(db.upcast()).map(|g_def| generics(db.upcast(), g_def));
335335
let filler = &mut Filler { db, subst: &subst, trait_env, generics, owner };
336336
let body = db.mir_body_for_closure(closure)?;

0 commit comments

Comments
 (0)