Yeet propagate_ambiguity - #162935
Yeet propagate_ambiguity#162935
propagate_ambiguity#162935Conversation
|
|
This comment has been minimized.
This comment has been minimized.
cf82761 to
f5bfcf0
Compare
This comment has been minimized.
This comment has been minimized.
f5bfcf0 to
94e5351
Compare
|
|
||
| let constraint = ((smallest_universe + 1)..=largest_universe) | ||
| .map(|u| UniverseIndex::from_usize(u)) | ||
| if !self |
There was a problem hiding this comment.
Can you add a comment explaining why we use ambiguity here
|
@rustbot author |
|
Reminder, once the PR becomes ready for a review, use |
This comment has been minimized.
This comment has been minimized.
94e5351 to
c901622
Compare
|
@rustbot ready |
|
@bors r+ rollup thx adwin |
Yeet `propagate_ambiguity` Fixes rust-lang/project-assumptions-on-binders#29 When assumptions computation fails, we want to force the goal response to be ambiguous since we can't evaluate placeholder constraints. We used to do this via `LeafRegionConstraint::Ambiguity` and propagates it everywhere. This PR simplifies that by tracking whether we should force ambiguity in a more direct way. We just check whether we have computed assumptions for relevant universes. This also clarifies the meaning of `LeafRegionConstraint::Ambiguity` which only represents true ambiguity (forever ambiguity no matter inference progress). This doesn't solve the problem that we're being conservative about forcing ambiguity. Maybe we can have `false`s in some universes even if other universes don't have assumptions. We can be smart about this in the future. Unsure part: we can also have ambiguity from non-lifetime placeholder. Unsure what to do with that. Still trying to understand it. r? @BoxyUwU
…uwer Rollup of 5 pull requests Successful merges: - #162917 (fix ice for unresolved inherent delegation) - #163209 (x perf takes database path) - #162935 (Yeet `propagate_ambiguity`) - #163289 (Ensure llvm worker threads have sufficient stack space) - #163303 (Remove `PartialOrd`/`Ord` impls for `Span`/`SpanData`)
…uwer Rollup of 9 pull requests Successful merges: - #162915 (Fix maximum `send` length on non-{Mac, Windows} platforms) - #162917 (fix ice for unresolved inherent delegation) - #163209 (x perf takes database path) - #162373 (Move the foreign module #[link] ABI check to attribute parsing) - #162829 (regression test for inherent associated const ICE) - #162935 (Yeet `propagate_ambiguity`) - #163289 (Ensure llvm worker threads have sufficient stack space) - #163303 (Remove `PartialOrd`/`Ord` impls for `Span`/`SpanData`) - #163421 (triagebot: Subscribe me to changes in test-float-parse)
Rollup merge of #162935 - adwinwhite:abby-ambig, r=BoxyUwU Yeet `propagate_ambiguity` Fixes rust-lang/project-assumptions-on-binders#29 When assumptions computation fails, we want to force the goal response to be ambiguous since we can't evaluate placeholder constraints. We used to do this via `LeafRegionConstraint::Ambiguity` and propagates it everywhere. This PR simplifies that by tracking whether we should force ambiguity in a more direct way. We just check whether we have computed assumptions for relevant universes. This also clarifies the meaning of `LeafRegionConstraint::Ambiguity` which only represents true ambiguity (forever ambiguity no matter inference progress). This doesn't solve the problem that we're being conservative about forcing ambiguity. Maybe we can have `false`s in some universes even if other universes don't have assumptions. We can be smart about this in the future. Unsure part: we can also have ambiguity from non-lifetime placeholder. Unsure what to do with that. Still trying to understand it. r? @BoxyUwU
|
Note This PR was benchmarked as part of triage of its containing rollup: triage URL. Finished benchmarking commit (2be20bd): comparison URL. Overall result: ✅ improvements - no action needed@rustbot label: -perf-regression Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)This perf run didn't have relevant results for this metric. CyclesResults (secondary -4.0%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis perf run didn't have relevant results for this metric. Bootstrap: missing data |
…uwer Rollup of 9 pull requests Successful merges: - rust-lang/rust#162915 (Fix maximum `send` length on non-{Mac, Windows} platforms) - rust-lang/rust#162917 (fix ice for unresolved inherent delegation) - rust-lang/rust#163209 (x perf takes database path) - rust-lang/rust#162373 (Move the foreign module #[link] ABI check to attribute parsing) - rust-lang/rust#162829 (regression test for inherent associated const ICE) - rust-lang/rust#162935 (Yeet `propagate_ambiguity`) - rust-lang/rust#163289 (Ensure llvm worker threads have sufficient stack space) - rust-lang/rust#163303 (Remove `PartialOrd`/`Ord` impls for `Span`/`SpanData`) - rust-lang/rust#163421 (triagebot: Subscribe me to changes in test-float-parse)
Fixes rust-lang/project-assumptions-on-binders#29
When assumptions computation fails, we want to force the goal response to be ambiguous since we can't evaluate placeholder constraints.
We used to do this via
LeafRegionConstraint::Ambiguityand propagates it everywhere.This PR simplifies that by tracking whether we should force ambiguity in a more direct way. We just check whether we have computed assumptions for relevant universes.
This also clarifies the meaning of
LeafRegionConstraint::Ambiguitywhich only represents true ambiguity (forever ambiguity no matter inference progress).This doesn't solve the problem that we're being conservative about forcing ambiguity. Maybe we can have
falses in some universes even if other universes don't have assumptions. We can be smart about this in the future.Unsure part: we can also have ambiguity from non-lifetime placeholder. Unsure what to do with that. Still trying to understand it.
r? @BoxyUwU