rerun in original typing mode if we meet any opaques in post analysis - #158993
Conversation
|
@bors try @rust-timer queue |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
rerun in original typing mode if we meet any opaques in post analysis
This comment has been minimized.
This comment has been minimized.
|
Finished benchmarking commit (82f26fd): comparison URL. Overall result: ❌ regressions - no action neededBenchmarking means the PR may be perf-sensitive. Consider adding rollup=never if this change is not fit for rolling up. @rustbot label: -S-waiting-on-perf -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)Results (primary -2.8%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (secondary 1.3%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeResults (primary 0.1%, secondary 0.1%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Bootstrap: 488.761s -> 488.757s (-0.00%) |
46cf47b to
b4bc03c
Compare
|
|
This comment has been minimized.
This comment has been minimized.
| } | ||
|
|
||
| fn main() { | ||
| // In `codegen_select_candidate`, we try to find impl for `FlatMap::into_iter` |
There was a problem hiding this comment.
| // In `codegen_select_candidate`, we try to find impl for `FlatMap::into_iter` | |
| // In `codegen_select_candidate`, we try to find an impl for `FlatMap::into_iter` |
| // Then we evaluate the normalized goal: | ||
| // `Projection(Fn::Output<parse_feature, (&str,)>, iter::Once`. | ||
| // The alias term is normalized to rigid alias `impl Iterator<Item = &str>` as | ||
| // we're in erased typing mode. |
There was a problem hiding this comment.
| // we're in erased typing mode. | |
| // we're in TypingMode::ErasedNotCoherence. |
| // we're in erased typing mode. | ||
| // But the expected term is revealed `iter::Once` thus relating failed. | ||
| // The goal fails with rerun condition `OpaqueInStorage(parse_feature::opaque)`. | ||
| // I expect this goal to be rerun in `Codegen` typing mode but |
There was a problem hiding this comment.
| // I expect this goal to be rerun in `Codegen` typing mode but | |
| // This goal should be rerun in `TypingMode::Codegen` mode, but |
|
@rustbot author |
|
Reminder, once the PR becomes ready for a review, use |
b4bc03c to
a8019c5
Compare
|
@bors r=jdonszelmann |
…, r=jdonszelmann rerun in original typing mode if we meet any opaques in post analysis When the rerun condition is `OpaqueInStorage` and typing mode is `PostAnalysis/Codegen`, we do rerun the evaluation in original typing mode. It's strange that we don't do the same when the rerun condition is `OpaqueInStorageOrAnyOpaqueHasInferAsHidden`. This fixes an ICE when building `cargo` with the next solver. r? @jdonszelmann cc @lcnr
…, r=jdonszelmann rerun in original typing mode if we meet any opaques in post analysis When the rerun condition is `OpaqueInStorage` and typing mode is `PostAnalysis/Codegen`, we do rerun the evaluation in original typing mode. It's strange that we don't do the same when the rerun condition is `OpaqueInStorageOrAnyOpaqueHasInferAsHidden`. This fixes an ICE when building `cargo` with the next solver. r? @jdonszelmann cc @lcnr
…, r=jdonszelmann rerun in original typing mode if we meet any opaques in post analysis When the rerun condition is `OpaqueInStorage` and typing mode is `PostAnalysis/Codegen`, we do rerun the evaluation in original typing mode. It's strange that we don't do the same when the rerun condition is `OpaqueInStorageOrAnyOpaqueHasInferAsHidden`. This fixes an ICE when building `cargo` with the next solver. r? @jdonszelmann cc @lcnr
…uwer Rollup of 22 pull requests Successful merges: - #156047 (Fix trait method resolution on an adjusted never type) - #157824 (Comptime inherent impls) - #158235 (Store `DefId` instead of `EiiDecl` in `EiiImplResolution::Known`) - #158723 (Support EII on Windows MSVC) - #158993 (rerun in original typing mode if we meet any opaques in post analysis) - #159160 (Make `HasTokens` a sub-trait of `HasAttrs`.) - #159183 (Introduce InstanceKind::LlvmIntrinsic) - #159251 (Bump rustc-perf submodule) - #155013 (Suggest the `[const] Destruct` bound for type parameters in const functions when missing) - #159155 (unstable book: Document `diagnostic_on_unknown` feature) - #159235 (Add regression test for #95719) - #159243 (inline Once wait and wait_force) - #159255 (Replace shortened type with `_` instead of `...` as placeholder) - #159259 (Add regression test for #144033) - #159265 (bootstrap: skip intrinsic-test when rustfmt is unavailable) - #159269 (disable range-len-try-from.rs on s390x) - #159272 (slice: make swap delegate to swap_unchecked) - #159274 (bootstrap: Rename `std_crates_for_run_make` to `std_crates_for_make_run`) - #159275 (remove obsolete comment) - #159277 (Construct `tokens` for attrs made by `mk_attr_word` and other variants) - #159283 (Remove obsolete verbose flag from deref/ref suggestions) - #159290 (rustc-dev-guide subtree update)
…uwer Rollup of 22 pull requests Successful merges: - #156047 (Fix trait method resolution on an adjusted never type) - #157824 (Comptime inherent impls) - #158235 (Store `DefId` instead of `EiiDecl` in `EiiImplResolution::Known`) - #158723 (Support EII on Windows MSVC) - #158993 (rerun in original typing mode if we meet any opaques in post analysis) - #159160 (Make `HasTokens` a sub-trait of `HasAttrs`.) - #159183 (Introduce InstanceKind::LlvmIntrinsic) - #159251 (Bump rustc-perf submodule) - #155013 (Suggest the `[const] Destruct` bound for type parameters in const functions when missing) - #159155 (unstable book: Document `diagnostic_on_unknown` feature) - #159235 (Add regression test for #95719) - #159243 (inline Once wait and wait_force) - #159255 (Replace shortened type with `_` instead of `...` as placeholder) - #159259 (Add regression test for #144033) - #159265 (bootstrap: skip intrinsic-test when rustfmt is unavailable) - #159269 (disable range-len-try-from.rs on s390x) - #159272 (slice: make swap delegate to swap_unchecked) - #159274 (bootstrap: Rename `std_crates_for_run_make` to `std_crates_for_make_run`) - #159275 (remove obsolete comment) - #159277 (Construct `tokens` for attrs made by `mk_attr_word` and other variants) - #159283 (Remove obsolete verbose flag from deref/ref suggestions) - #159290 (rustc-dev-guide subtree update)
Rollup merge of #158993 - adwinwhite:rigid-opaque-in-codegen, r=jdonszelmann rerun in original typing mode if we meet any opaques in post analysis When the rerun condition is `OpaqueInStorage` and typing mode is `PostAnalysis/Codegen`, we do rerun the evaluation in original typing mode. It's strange that we don't do the same when the rerun condition is `OpaqueInStorageOrAnyOpaqueHasInferAsHidden`. This fixes an ICE when building `cargo` with the next solver. r? @jdonszelmann cc @lcnr
…uwer Rollup of 22 pull requests Successful merges: - rust-lang/rust#156047 (Fix trait method resolution on an adjusted never type) - rust-lang/rust#157824 (Comptime inherent impls) - rust-lang/rust#158235 (Store `DefId` instead of `EiiDecl` in `EiiImplResolution::Known`) - rust-lang/rust#158723 (Support EII on Windows MSVC) - rust-lang/rust#158993 (rerun in original typing mode if we meet any opaques in post analysis) - rust-lang/rust#159160 (Make `HasTokens` a sub-trait of `HasAttrs`.) - rust-lang/rust#159183 (Introduce InstanceKind::LlvmIntrinsic) - rust-lang/rust#159251 (Bump rustc-perf submodule) - rust-lang/rust#155013 (Suggest the `[const] Destruct` bound for type parameters in const functions when missing) - rust-lang/rust#159155 (unstable book: Document `diagnostic_on_unknown` feature) - rust-lang/rust#159235 (Add regression test for rust-lang/rust#95719) - rust-lang/rust#159243 (inline Once wait and wait_force) - rust-lang/rust#159255 (Replace shortened type with `_` instead of `...` as placeholder) - rust-lang/rust#159259 (Add regression test for rust-lang/rust#144033) - rust-lang/rust#159265 (bootstrap: skip intrinsic-test when rustfmt is unavailable) - rust-lang/rust#159269 (disable range-len-try-from.rs on s390x) - rust-lang/rust#159272 (slice: make swap delegate to swap_unchecked) - rust-lang/rust#159274 (bootstrap: Rename `std_crates_for_run_make` to `std_crates_for_make_run`) - rust-lang/rust#159275 (remove obsolete comment) - rust-lang/rust#159277 (Construct `tokens` for attrs made by `mk_attr_word` and other variants) - rust-lang/rust#159283 (Remove obsolete verbose flag from deref/ref suggestions) - rust-lang/rust#159290 (rustc-dev-guide subtree update)
…uwer Rollup of 22 pull requests Successful merges: - rust-lang/rust#156047 (Fix trait method resolution on an adjusted never type) - rust-lang/rust#157824 (Comptime inherent impls) - rust-lang/rust#158235 (Store `DefId` instead of `EiiDecl` in `EiiImplResolution::Known`) - rust-lang/rust#158723 (Support EII on Windows MSVC) - rust-lang/rust#158993 (rerun in original typing mode if we meet any opaques in post analysis) - rust-lang/rust#159160 (Make `HasTokens` a sub-trait of `HasAttrs`.) - rust-lang/rust#159183 (Introduce InstanceKind::LlvmIntrinsic) - rust-lang/rust#159251 (Bump rustc-perf submodule) - rust-lang/rust#155013 (Suggest the `[const] Destruct` bound for type parameters in const functions when missing) - rust-lang/rust#159155 (unstable book: Document `diagnostic_on_unknown` feature) - rust-lang/rust#159235 (Add regression test for rust-lang/rust#95719) - rust-lang/rust#159243 (inline Once wait and wait_force) - rust-lang/rust#159255 (Replace shortened type with `_` instead of `...` as placeholder) - rust-lang/rust#159259 (Add regression test for rust-lang/rust#144033) - rust-lang/rust#159265 (bootstrap: skip intrinsic-test when rustfmt is unavailable) - rust-lang/rust#159269 (disable range-len-try-from.rs on s390x) - rust-lang/rust#159272 (slice: make swap delegate to swap_unchecked) - rust-lang/rust#159274 (bootstrap: Rename `std_crates_for_run_make` to `std_crates_for_make_run`) - rust-lang/rust#159275 (remove obsolete comment) - rust-lang/rust#159277 (Construct `tokens` for attrs made by `mk_attr_word` and other variants) - rust-lang/rust#159283 (Remove obsolete verbose flag from deref/ref suggestions) - rust-lang/rust#159290 (rustc-dev-guide subtree update)
…uwer Rollup of 22 pull requests Successful merges: - rust-lang/rust#156047 (Fix trait method resolution on an adjusted never type) - rust-lang/rust#157824 (Comptime inherent impls) - rust-lang/rust#158235 (Store `DefId` instead of `EiiDecl` in `EiiImplResolution::Known`) - rust-lang/rust#158723 (Support EII on Windows MSVC) - rust-lang/rust#158993 (rerun in original typing mode if we meet any opaques in post analysis) - rust-lang/rust#159160 (Make `HasTokens` a sub-trait of `HasAttrs`.) - rust-lang/rust#159183 (Introduce InstanceKind::LlvmIntrinsic) - rust-lang/rust#159251 (Bump rustc-perf submodule) - rust-lang/rust#155013 (Suggest the `[const] Destruct` bound for type parameters in const functions when missing) - rust-lang/rust#159155 (unstable book: Document `diagnostic_on_unknown` feature) - rust-lang/rust#159235 (Add regression test for rust-lang/rust#95719) - rust-lang/rust#159243 (inline Once wait and wait_force) - rust-lang/rust#159255 (Replace shortened type with `_` instead of `...` as placeholder) - rust-lang/rust#159259 (Add regression test for rust-lang/rust#144033) - rust-lang/rust#159265 (bootstrap: skip intrinsic-test when rustfmt is unavailable) - rust-lang/rust#159269 (disable range-len-try-from.rs on s390x) - rust-lang/rust#159272 (slice: make swap delegate to swap_unchecked) - rust-lang/rust#159274 (bootstrap: Rename `std_crates_for_run_make` to `std_crates_for_make_run`) - rust-lang/rust#159275 (remove obsolete comment) - rust-lang/rust#159277 (Construct `tokens` for attrs made by `mk_attr_word` and other variants) - rust-lang/rust#159283 (Remove obsolete verbose flag from deref/ref suggestions) - rust-lang/rust#159290 (rustc-dev-guide subtree update)
[stable] 1.98.1 release Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441 We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
[stable] 1.98.1 release Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441 We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
[stable] 1.98.1 release Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441 We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
[stable] 1.98.1 release Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441 We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
[stable] 1.98.1 release Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441 We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
[stable] 1.98.1 release Backport of "rerun in original typing mode if we meet any opaques in post analysis" #158993 to stable, fixes #161441 We didn't notice that a beta cutoff happened between #156742 and #158993 and it's easy to forget that we need to be careful with next-solver bugs as they can affect stable via coherence and `impossible_predicates`.
Problem The pinned nightly 2026-07-07 predates the vtable miscompilation fix that stable picked up in 1.98.1, so CI would lint and check against a compiler carrying the very bug the stable bump exists to avoid. Summary of Changes - move nightly to 2026-07-16, the first one containing rust-lang/rust#158993
* chore(toolchain): bump rust toolchain to 1.98.1 and nightly=2026-07-07 Problem The pinned toolchain is 1.98.0; the 1.98.1 patch release is out. Raising the workspace `rust-version` to 1.98.1 alone breaks the nightly CI check, since nightly never reports a patch component: nightly-2026-07-03 identifies as 1.98.0-nightly, so cargo rejects the workspace as requiring a newer rustc. Summary of Changes - bump `rust-toolchain.toml` channel and workspace `rust-version` to 1.98.1 - move nightly to 2026-07-07, the first nightly reporting 1.99.0 and hence the closest one clearing the new `rust-version` * chore(toolchain): move nightly to 2026-07-16 Problem The pinned nightly 2026-07-07 predates the vtable miscompilation fix that stable picked up in 1.98.1, so CI would lint and check against a compiler carrying the very bug the stable bump exists to avoid. Summary of Changes - move nightly to 2026-07-16, the first one containing rust-lang/rust#158993
CI derives its stable toolchain from the `rust-version` field in the root `Cargo.toml`, so that field is what decides which warnings CI can see. Holding it at 1.97.1 meant the lints Rust 1.98 introduced only showed up when someone built locally, which is how the warnings fixed in #38619 went unnoticed. Raising it closes that gap. Cargo.lock needs no change, which matters because the doc test job resolves with `--locked`. The pin is 1.98.1 rather than 1.98.0. 1.98.0 shipped an open `P-critical` miscompilation, rust-lang/rust#161441: rustc could wrongly decide an impl's predicates were impossible when they involved associated-type projections plus an opaque type, emit a vacant vtable entry, and leave a zero in the method slot, so safe code dispatched through a null pointer. That was silent at compile time, and `rust-version` selects the toolchain in the `stable` ci-builder flavor that builds the shipped images, so it would have reached release artifacts. rust-lang/rust#158993 fixed it after the 1.98 beta cutoff and rust-lang/rust#161555 backported it for 1.98.1, which is now the current stable release. Rust 1.98.1 uses LLVM 22.1.8, matching the `clang-22`, `lld-22`, and `llvm-22` packages the CI builder image already installs, so the Dockerfile needs no accompanying change. The comment on that apt stanza asks for the two to move together, and they still agree. Bumping `rust-version` does change the builder image tag, because the tag hashes the build arguments and `RUST_VERSION` is one of them. `ci/mkpipeline.sh` detects the missing tag and inserts bootstrap steps that build and push the stable, min, and console flavors for both architectures, so the first build on this branch will be slow but needs no manual intervention. The nightly pin moves to 2026-09-02. The note that pinned it to 2026-08-02 pointed at rust-lang/rust#160439, a rustdoc hang that broke the Doctests job, and that issue was closed as completed on 2026-08-06. The note is removed rather than reworded, because the constraint it described no longer exists. Advancing the nightly does make rustdoc's `redundant_explicit_links` lint fire, and `bin/doc` runs with `RUSTDOCFLAGS=-D warnings`, so those become errors. Eight doc comments in `mz-avro` and `mz-pgtest` spell an intra-doc link as a label plus an explicit legacy HTML path that resolves to the same destination. Dropping the explicit target is the rewrite rustdoc itself suggests, and every referenced item is in scope at the link site. The `flush` links in the Avro writer keep their explicit targets, because a fragment path is not redundant with its label and rustdoc does not flag them. ### Outstanding before merge `bin/lint-versions` records the Rust version that has been checked for compilation time regressions, and it is updated here so `bin/lint` passes. **That validation has not been performed.** Team Testing should confirm 1.98.1 before this merges. Two further caveats for reviewers. The `cargo test --doc` job could not be exercised locally because that machine has no `protoc`, so it is covered only by CI. Building the nightly builder image also runs `cargo miri setup` and installs `cargo-fuzz`, neither of which can be checked outside an image build; both fail loudly in the bootstrap step rather than silently. Finally, a toolchain bump surfaces latent problems anywhere in the tree, not only in the diff, so a failure on this branch may point at code it does not touch. ### Release notes No user-visible changes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
When the rerun condition is
OpaqueInStorageand typing mode isPostAnalysis/Codegen, we do rerun the evaluation in original typing mode.It's strange that we don't do the same when the rerun condition is
OpaqueInStorageOrAnyOpaqueHasInferAsHidden.This fixes an ICE when building
cargowith the next solver.r? @jdonszelmann
cc @lcnr