Skip to content

Commit 19d23b2

Browse files
authored
Merge pull request #685 from hacspec/refactor-exporter-param-env
refactor(exporter): always use `State::param_env`
2 parents 9da5c6c + 57aedbc commit 19d23b2

File tree

6 files changed

+24
-20
lines changed

6 files changed

+24
-20
lines changed

frontend/exporter/src/constant_utils.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ pub trait ConstantExt<'tcx>: Sized + std::fmt::Debug {
362362

363363
// Solve the trait obligations
364364
let parent_def_id = tcx.parent(ucv.def);
365-
let param_env = tcx.param_env(s.owner_id());
365+
let param_env = s.param_env();
366366
let trait_refs =
367367
solve_item_traits(s, param_env, parent_def_id, ucv.substs, None);
368368

@@ -391,13 +391,13 @@ pub trait ConstantExt<'tcx>: Sized + std::fmt::Debug {
391391
}
392392
impl<'tcx> ConstantExt<'tcx> for rustc_middle::ty::Const<'tcx> {
393393
fn eval_constant<S: UnderOwnerState<'tcx>>(&self, s: &S) -> Option<Self> {
394-
let evaluated = self.eval(s.base().tcx, get_param_env(s));
394+
let evaluated = self.eval(s.base().tcx, s.param_env());
395395
(&evaluated != self).then_some(evaluated)
396396
}
397397
}
398398
impl<'tcx> ConstantExt<'tcx> for rustc_middle::mir::ConstantKind<'tcx> {
399399
fn eval_constant<S: UnderOwnerState<'tcx>>(&self, s: &S) -> Option<Self> {
400-
let evaluated = self.eval(s.base().tcx, get_param_env(s));
400+
let evaluated = self.eval(s.base().tcx, s.param_env());
401401
(&evaluated != self).then_some(evaluated)
402402
}
403403
}
@@ -505,7 +505,7 @@ pub(crate) fn const_value_reference_to_constant_expr<'tcx, S: UnderOwnerState<'t
505505
let tcx = s.base().tcx;
506506

507507
// We use [try_destructure_mir_constant] to destructure the constant
508-
let param_env = get_param_env(s);
508+
let param_env = s.param_env();
509509
// We have to clone some values: it is a bit annoying, but I don't
510510
// manage to get the lifetimes working otherwise...
511511
let cvalue = rustc_middle::mir::ConstantKind::Val(val, ty);

frontend/exporter/src/rustc_utils.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,14 @@ pub fn translate_span(span: rustc_span::Span, sess: &rustc_session::Session) ->
212212
}
213213
}
214214

215-
#[tracing::instrument(skip(s))]
216-
pub(crate) fn get_param_env<'tcx, S: UnderOwnerState<'tcx>>(s: &S) -> ty::ParamEnv<'tcx> {
217-
s.base().tcx.param_env(s.owner_id())
215+
pub trait ParamEnv<'tcx> {
216+
fn param_env(&self) -> ty::ParamEnv<'tcx>;
217+
}
218+
219+
impl<'tcx, S: UnderOwnerState<'tcx>> ParamEnv<'tcx> for S {
220+
fn param_env(&self) -> ty::ParamEnv<'tcx> {
221+
self.base().tcx.param_env(self.owner_id())
222+
}
218223
}
219224

220225
#[tracing::instrument]

frontend/exporter/src/traits.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ pub fn super_clause_to_clause_and_impl_expr<'tcx, S: UnderOwnerState<'tcx>>(
409409
let impl_expr = new_clause
410410
.as_predicate()
411411
.to_opt_poly_trait_pred()?
412-
.impl_expr(s, get_param_env(s));
412+
.impl_expr(s, s.param_env());
413413
let mut new_clause_no_binder = new_clause.sinto(s);
414414
new_clause_no_binder.id = original_predicate_id;
415415
Some((new_clause_no_binder, impl_expr, span.sinto(s)))

frontend/exporter/src/types/copied.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1605,12 +1605,12 @@ impl Alias {
16051605
let rebased_substs = alias_ty.rebase_substs_onto_impl(alias_ty.substs, tcx);
16061606
let norm_rebased_substs = tcx.try_subst_and_normalize_erasing_regions(
16071607
rebased_substs,
1608-
get_param_env(s),
1608+
s.param_env(),
16091609
EarlyBinder::bind(trait_ref),
16101610
);
16111611
let norm_substs = tcx.try_subst_and_normalize_erasing_regions(
16121612
alias_ty.substs,
1613-
get_param_env(s),
1613+
s.param_env(),
16141614
EarlyBinder::bind(trait_ref),
16151615
);
16161616
let early_binder_substs =
@@ -1636,7 +1636,7 @@ impl Alias {
16361636
};
16371637
AliasKind::Projection {
16381638
assoc_item: tcx.associated_item(alias_ty.def_id).sinto(s),
1639-
impl_expr: poly_trait_ref.impl_expr(s, get_param_env(s)),
1639+
impl_expr: poly_trait_ref.impl_expr(s, s.param_env()),
16401640
}
16411641
}
16421642
RustAliasKind::Inherent => AliasKind::Inherent,
@@ -1683,8 +1683,7 @@ pub enum Ty {
16831683
rustc_middle::ty::TyKind::Adt(adt_def, substs) => {
16841684
let def_id = adt_def.did().sinto(state);
16851685
let generic_args: Vec<GenericArg> = substs.sinto(state);
1686-
let param_env = state.base().tcx.param_env(state.owner_id());
1687-
let trait_refs = solve_item_traits(state, param_env, adt_def.did(), substs, None);
1686+
let trait_refs = solve_item_traits(state, state.param_env(), adt_def.did(), substs, None);
16881687
Ty::Adt { def_id, generic_args, trait_refs }
16891688
},
16901689
)]
@@ -2224,9 +2223,9 @@ pub enum ExprKind {
22242223
let tcx = gstate.base().tcx;
22252224
r#impl = tcx.opt_associated_item(*def_id).as_ref().and_then(|assoc| {
22262225
poly_trait_ref(gstate, assoc, substs)
2227-
}).map(|poly_trait_ref| poly_trait_ref.impl_expr(gstate, get_param_env(gstate)));
2226+
}).map(|poly_trait_ref| poly_trait_ref.impl_expr(gstate, gstate.param_env()));
22282227
generic_args = substs.sinto(gstate);
2229-
bounds_impls = solve_item_traits(gstate, get_param_env(gstate), *def_id, substs, None);
2228+
bounds_impls = solve_item_traits(gstate, gstate.param_env(), *def_id, substs, None);
22302229
Expr {
22312230
contents,
22322231
span: e.span.sinto(gstate),
@@ -2478,7 +2477,7 @@ pub enum ExprKind {
24782477
let tcx = gstate.base().tcx;
24792478
tcx.opt_associated_item(*def_id).as_ref().and_then(|assoc| {
24802479
poly_trait_ref(gstate, assoc, substs)
2481-
}).map(|poly_trait_ref| poly_trait_ref.impl_expr(gstate, tcx.param_env(gstate.owner_id())))
2480+
}).map(|poly_trait_ref| poly_trait_ref.impl_expr(gstate, gstate.param_env()))
24822481
})]
24832482
r#impl: Option<ImplExpr>,
24842483
},

frontend/exporter/src/types/mir.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ pub(crate) fn get_function_from_def_id_and_substs<'tcx, S: BaseState<'tcx> + Has
213213
substs: rustc_middle::ty::subst::SubstsRef<'tcx>,
214214
) -> (DefId, Vec<GenericArg>, Vec<ImplExpr>, Option<ImplExpr>) {
215215
let tcx = s.base().tcx;
216-
let param_env = tcx.param_env(s.owner_id());
216+
let param_env = s.param_env();
217217

218218
// Retrieve the trait requirements for the **method**.
219219
// For instance, if we write:
@@ -852,7 +852,7 @@ pub enum AggregateKind {
852852
Tuple,
853853
#[custom_arm(rustc_middle::mir::AggregateKind::Adt(def_id, vid, substs, annot, fid) => {
854854
let adt_kind = s.base().tcx.adt_def(def_id).adt_kind().sinto(s);
855-
let param_env = s.base().tcx.param_env(s.owner_id());
855+
let param_env = s.param_env();
856856
let trait_refs = solve_item_traits(s, param_env, *def_id, substs, None);
857857
AggregateKind::Adt(
858858
def_id.sinto(s),
@@ -884,7 +884,7 @@ pub enum AggregateKind {
884884
885885
// Solve the trait obligations. Note that we solve the parent
886886
let tcx = s.base().tcx;
887-
let param_env = tcx.param_env(s.owner_id());
887+
let param_env = s.param_env();
888888
let parent_substs = closure.parent_substs();
889889
let substs = tcx.mk_substs(parent_substs);
890890
// Retrieve the predicates from the parent (i.e., the function which calls

frontend/exporter/src/types/mir_traits.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ pub fn get_trait_info<'tcx, S: UnderOwnerState<'tcx>>(
88
assoc: &rustc_middle::ty::AssocItem,
99
) -> ImplExpr {
1010
let tcx = s.base().tcx;
11-
let param_env = tcx.param_env(s.owner_id());
11+
let param_env = s.param_env();
1212

1313
// Retrieve the trait
1414
let tr_def_id = tcx.trait_of_item(assoc.def_id).unwrap();

0 commit comments

Comments
 (0)