Skip to content

Commit 08aeb1a

Browse files
committed
unconditionally remap to nonconst in borrowck
1 parent 31f259c commit 08aeb1a

File tree

1 file changed

+6
-18
lines changed
  • compiler/rustc_borrowck/src/type_check

1 file changed

+6
-18
lines changed

Diff for: compiler/rustc_borrowck/src/type_check/mod.rs

+6-18
Original file line numberDiff line numberDiff line change
@@ -424,31 +424,19 @@ impl<'a, 'b, 'tcx> Visitor<'tcx> for TypeVerifier<'a, 'b, 'tcx> {
424424
}
425425

426426
if let ty::FnDef(def_id, substs) = *constant.literal.ty().kind() {
427-
// N.B.: When instantiating a trait method as a function item, it does not actually matter
428-
// whether the trait is `const` or not, or whether `where T: ~const Tr` needs to be satisfied
429-
// as `const`. If we were to introduce instantiating trait methods as `const fn`s, we would
430-
// check that after this, either via a bound `where F: ~const FnOnce` or when coercing to a
431-
// `const fn` pointer.
432-
//
433-
// FIXME(fee1-dead) FIXME(const_trait_impl): update this doc when trait methods can satisfy
434-
// `~const FnOnce` or can be coerced to `const fn` pointer.
435-
let const_norm = self.tcx().def_kind(def_id) == hir::def::DefKind::AssocFn
436-
&& self.tcx().def_kind(ty::DefIdTree::parent(self.tcx(), def_id))
437-
== hir::def::DefKind::Trait;
438-
427+
// const_trait_impl: use a non-const param env when checking that a FnDef type is well formed.
428+
// this is because the well-formedness of the function does not need to be proved to have `const`
429+
// impls for trait bounds.
439430
let instantiated_predicates = tcx.predicates_of(def_id).instantiate(tcx, substs);
440431
let prev = self.cx.param_env;
441-
if const_norm {
442-
self.cx.param_env = prev.without_const();
443-
}
432+
self.cx.param_env = prev.without_const();
444433
self.cx.normalize_and_prove_instantiated_predicates(
445434
def_id,
446435
instantiated_predicates,
447436
locations,
448437
);
449-
if const_norm {
450-
self.cx.param_env = prev;
451-
}
438+
self.cx.param_env = prev;
439+
452440
}
453441
}
454442
}

0 commit comments

Comments
 (0)