update TypeFlags
to deal with missing ct substs
This commit is contained in:
parent
cc47998e28
commit
ab9108b70f
44 changed files with 305 additions and 166 deletions
|
@ -544,7 +544,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
},
|
||||
|
||||
ty::PredicateKind::TypeOutlives(pred) => {
|
||||
if pred.0.is_global() {
|
||||
if pred.0.is_known_global() {
|
||||
Ok(EvaluatedToOk)
|
||||
} else {
|
||||
Ok(EvaluatedToOkModuloRegions)
|
||||
|
@ -692,8 +692,12 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
debug!(?obligation, "evaluate_trait_predicate_recursively");
|
||||
|
||||
if !self.intercrate
|
||||
&& obligation.is_global()
|
||||
&& obligation.param_env.caller_bounds().iter().all(|bound| bound.needs_subst())
|
||||
&& obligation.is_global(self.tcx())
|
||||
&& obligation
|
||||
.param_env
|
||||
.caller_bounds()
|
||||
.iter()
|
||||
.all(|bound| bound.needs_subst(self.tcx()))
|
||||
{
|
||||
// If a param env has no global bounds, global obligations do not
|
||||
// depend on its particular value in order to work, so we can clear
|
||||
|
@ -1452,7 +1456,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
// the param_env so that it can be given the lowest priority. See
|
||||
// #50825 for the motivation for this.
|
||||
let is_global =
|
||||
|cand: &ty::PolyTraitRef<'_>| cand.is_global() && !cand.has_late_bound_regions();
|
||||
|cand: &ty::PolyTraitRef<'_>| cand.is_known_global() && !cand.has_late_bound_regions();
|
||||
|
||||
// (*) Prefer `BuiltinCandidate { has_nested: false }`, `PointeeCandidate`,
|
||||
// and `DiscriminantKindCandidate` to anything else.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue