Auto merge of #102056 - b-naber:unevaluated, r=lcnr
Introduce mir::Unevaluated Previously the distinction between unevaluated constants in the type-system and in mir was not explicit and a little confusing. Probably better to introduce its own type for that. r? `@lcnr`
This commit is contained in:
commit
9a963e3bad
38 changed files with 220 additions and 156 deletions
|
@ -1113,10 +1113,12 @@ fn check_type_defn<'tcx, F>(
|
|||
wfcx.register_obligation(traits::Obligation::new(
|
||||
cause,
|
||||
wfcx.param_env,
|
||||
ty::Binder::dummy(ty::PredicateKind::ConstEvaluatable(ty::Unevaluated::new(
|
||||
ty::WithOptConstParam::unknown(discr_def_id.to_def_id()),
|
||||
discr_substs,
|
||||
)))
|
||||
ty::Binder::dummy(ty::PredicateKind::ConstEvaluatable(
|
||||
ty::UnevaluatedConst::new(
|
||||
ty::WithOptConstParam::unknown(discr_def_id.to_def_id()),
|
||||
discr_substs,
|
||||
),
|
||||
))
|
||||
.to_predicate(tcx),
|
||||
));
|
||||
}
|
||||
|
|
|
@ -2393,7 +2393,6 @@ fn const_evaluatable_predicates_of<'tcx>(
|
|||
let def_id = self.tcx.hir().local_def_id(c.hir_id);
|
||||
let ct = ty::Const::from_anon_const(self.tcx, def_id);
|
||||
if let ty::ConstKind::Unevaluated(uv) = ct.kind() {
|
||||
assert_eq!(uv.promoted, ());
|
||||
let span = self.tcx.hir().span(c.hir_id);
|
||||
self.preds.insert((
|
||||
ty::Binder::dummy(ty::PredicateKind::ConstEvaluatable(uv))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue