-
Notifications
You must be signed in to change notification settings - Fork 13.3k
support revealing uses in HIR typeck #140497
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
This comment has been minimized.
This comment has been minimized.
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 ~~[top 100 most downloaded crates on crates.io compile](rust-lang#133502 (comment) [top 1000 most downloaded crates on crates.io compile](rust-lang#133502 (comment)) [first perf run](rust-lang#133502 (comment)) 👻 ### in-flight changes - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140260 - rust-lang#140375 - rust-lang#140405 - rust-lang#140496 r? `@ghost`
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 ~~[top 100 most downloaded crates on crates.io compile](rust-lang#133502 (comment) [top 1000 most downloaded crates on crates.io compile](rust-lang#133502 (comment)) [first perf run](rust-lang#133502 (comment)) 👻 ### in-flight changes - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140260 - rust-lang#140375 - rust-lang#140405 - rust-lang#140496 r? `@ghost`
This comment has been minimized.
This comment has been minimized.
2c82cd1
to
5b5019a
Compare
This comment has been minimized.
This comment has been minimized.
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 [first perf run](rust-lang#133502 (comment)) 👻 ### crater This does not detect hangs or memory issues. | date | #crates | #regressions | | ---- | ------- | ------------ | | 2025.04.11 | 100 | 2 | | 2025.04.11 | 1000 | 27 | | 2025.04.17 | 10000 | 456 | | 2025.04.18 | 10000 | 437 | | 2025.04.24 | 10000 | 164 | | 2025.04.26 | 10000 | 108 | | 2025.04.28 | 10000 | 91 | | 2025.05.01 | 10000 | 145 woops | ### in-flight changes - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140260 - rust-lang#140375 - rust-lang#140405 - rust-lang#140496 r? `@ghost`
support duplicate entries in the opaque_type_storage Necessary for the new solver as we may unify keys when eagerly resolving for canonical queries. See the relevant comment when instantiating query responses: ```rust // We eagerly resolve inference variables when computing the query response. // This can cause previously distinct opaque type keys to now be structurally equal. // // To handle this, we store any duplicate entries in a separate list to check them // at the end of typeck/borrowck. We could alternatively eagerly equate the hidden // types here. However, doing so is difficult as it may result in nested goals and // any errors may make it harder to track the control flow for diagnostics. if let Some(prev) = prev { self.delegate.add_duplicate_opaque_type(key, prev, self.origin_span); } ``` This will be far more relevant with rust-lang#140497. r? `@compiler-errors`
5b5019a
to
943dbaa
Compare
This comment has been minimized.
This comment has been minimized.
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 [first perf run](rust-lang#133502 (comment)) 👻 ### crater This does not detect hangs or memory issues. | date | #crates | #regressions | | ---- | ------- | ------------ | | 2025.04.11 | 100 | 2 | | 2025.04.11 | 1000 | 27 | | 2025.04.17 | 10000 | 456 | | 2025.04.18 | 10000 | 437 | | 2025.04.24 | 10000 | 164 | | 2025.04.26 | 10000 | 108 | | 2025.04.28 | 10000 | 91 | | 2025.05.01 | 10000 | 145 woops | | 2025.05.03 | 624228[^1] | 1585 | [^1]: a complete crater run ### in-flight changes - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140260 - rust-lang#140375 - rust-lang#140405 - rust-lang#140496 r? `@ghost`
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 [first perf run](rust-lang#133502 (comment)) 👻 ### crater This does not detect hangs or memory issues. | date | #crates | #regressions | | ---- | ------- | ------------ | | 2025.04.11 | 100 | 2 | | 2025.04.11 | 1000 | 27 | | 2025.04.17 | 10000 | 456 | | 2025.04.18 | 10000 | 437 | | 2025.04.24 | 10000 | 164 | | 2025.04.26 | 10000 | 108 | | 2025.04.28 | 10000 | 91 | | 2025.05.01 | 10000 | 145 woops | | 2025.05.03 | 624228[^1] | 1585 | [^1]: a complete crater run ### in-flight changes - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140260 - rust-lang#140375 - rust-lang#140405 - rust-lang#140496 - double recursion limit in the new solver r? `@ghost`
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 [first perf run](rust-lang#133502 (comment)) 👻 ### crater This does not detect hangs or memory issues. | date | #crates | #regressions | | ---- | ------- | ------------ | | 2025.04.11 | 100 | 2 | | 2025.04.11 | 1000 | 27 | | 2025.04.17 | 10000 | 456 | | 2025.04.18 | 10000 | 437 | | 2025.04.24 | 10000 | 164 | | 2025.04.26 | 10000 | 108 | | 2025.04.28 | 10000 | 91 | | 2025.05.01 | 10000 | 145 woops | | 2025.05.03 | 624228[^1] | 1585 | [^1]: a complete crater run ### in-flight changes - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140260 - rust-lang#140375 - rust-lang#140405 - rust-lang#140496 - double recursion limit in the new solver r? `@ghost`
943dbaa
to
74f6325
Compare
This comment has been minimized.
This comment has been minimized.
74f6325
to
93ea836
Compare
This comment has been minimized.
This comment has been minimized.
93ea836
to
0fc5729
Compare
This comment has been minimized.
This comment has been minimized.
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 [first perf run](rust-lang#133502 (comment)) 👻 ### crater This does not detect hangs or memory issues. | date | #crates | #regressions | | ---- | ------- | ------------ | | 2025.04.11 | 100 | 2 | | 2025.04.11 | 1000 | 27 | | 2025.04.17 | 10000 | 456 | | 2025.04.18 | 10000 | 437 | | 2025.04.24 | 10000 | 164 | | 2025.04.26 | 10000 | 108 | | 2025.04.28 | 10000 | 91 | | 2025.05.01 | 10000 | 145 woops | | 2025.05.03 | 624228[^1] | 1585 | | 2025.05.05 | 8964[^2] | 931 | [^1]: a complete crater run [^2]: only testing crates which may have regressed from the above run ### in-flight changes - rust-lang#140561 - rust-lang#140672 - rust-lang#140678 - rust-lang#136997 - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140260 - rust-lang#140375 - rust-lang#140405 - rust-lang#140496 - double recursion limit in the new solver r? `@ghost`
☔ The latest upstream changes (presumably #140682) made this pull request unmergeable. Please resolve the merge conflicts. |
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 [first perf run](rust-lang#133502 (comment)) 👻 ### crater This does not detect hangs or memory issues. | date | #crates | #regressions | | ---- | ------- | ------------ | | 2025.04.11 | 100 | 2 | | 2025.04.11 | 1000 | 27 | | 2025.04.17 | 10000 | 456 | | 2025.04.18 | 10000 | 437 | | 2025.04.24 | 10000 | 164 | | 2025.04.26 | 10000 | 108 | | 2025.04.28 | 10000 | 91 | | 2025.05.01 | 10000 | 145 woops | | 2025.05.03 | 624228[^1] | 1585 | | 2025.05.05 | 8964[^2] | 931 | [^1]: a complete crater run [^2]: only testing crates which may have regressed from the above run ### in-flight changes - rust-lang#140561 - rust-lang#140672 - rust-lang#140678 - rust-lang#136997 - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140260 - rust-lang#140375 - rust-lang#140405 - rust-lang#140496 - double recursion limit in the new solver r? `@ghost`
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 [first perf run](rust-lang#133502 (comment)) 👻 ### crater This does not detect hangs or memory issues. | date | #crates | #regressions | | ---- | ------- | ------------ | | 2025.04.11 | 100 | 2 | | 2025.04.11 | 1000 | 27 | | 2025.04.17 | 10000 | 456 | | 2025.04.18 | 10000 | 437 | | 2025.04.24 | 10000 | 164 | | 2025.04.26 | 10000 | 108 | | 2025.04.28 | 10000 | 91 | | 2025.05.01 | 10000 | 145 woops | | 2025.05.03 | 624228[^1] | 1585 | | 2025.05.05 | 8964[^2] | 931 | | 2025.05.06 | 4401[^2] | 726 | [^1]: a complete crater run [^2]: only testing crates which may have regressed from the above run ### in-flight changes - rust-lang#140561 - rust-lang#140672 - rust-lang#140678 - rust-lang#136997 - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140260 - rust-lang#140375 - rust-lang#140405 - rust-lang#140496 - double recursion limit in the new solver r? `@ghost`
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 [first perf run](rust-lang#133502 (comment)) 👻 ### crater This does not detect hangs or memory issues. | date | #crates | #regressions | | ---- | ------- | ------------ | | 2025.04.11 | 100 | 2 | | 2025.04.11 | 1000 | 27 | | 2025.04.17 | 10000 | 456 | | 2025.04.18 | 10000 | 437 | | 2025.04.24 | 10000 | 164 | | 2025.04.26 | 10000 | 108 | | 2025.04.28 | 10000 | 91 | | 2025.05.01 | 10000 | 145 woops | | 2025.05.03 | 624228[^1] | 1585 | | 2025.05.05 | 8964[^2] | 931 | | 2025.05.06 | 4401[^2] | 726 | [^1]: a complete crater run [^2]: only testing crates which may have regressed from the above run ### in-flight changes - rust-lang#140561 - rust-lang#140672 - rust-lang#140678 - rust-lang#136997 - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140260 - rust-lang#140375 - rust-lang#140405 - rust-lang#140496 - double recursion limit in the new solver r? `@ghost`
0fc5729
to
80d7470
Compare
This comment has been minimized.
This comment has been minimized.
…er-errors support duplicate entries in the opaque_type_storage Necessary for the new solver as we may unify keys when eagerly resolving for canonical queries. See the relevant comment when instantiating query responses: ```rust // We eagerly resolve inference variables when computing the query response. // This can cause previously distinct opaque type keys to now be structurally equal. // // To handle this, we store any duplicate entries in a separate list to check them // at the end of typeck/borrowck. We could alternatively eagerly equate the hidden // types here. However, doing so is difficult as it may result in nested goals and // any errors may make it harder to track the control flow for diagnostics. if let Some(prev) = prev { self.delegate.add_duplicate_opaque_type(key, prev, self.origin_span); } ``` This will be far more relevant with rust-lang#140497. r? `@compiler-errors`
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 [first perf run](rust-lang#133502 (comment)) 👻 ### crater This does not detect hangs or memory issues. | date | #crates | #regressions | | ---- | ------- | ------------ | | 2025.04.11 | 100 | 2 | | 2025.04.11 | 1000 | 27 | | 2025.04.17 | 10000 | 456 | | 2025.04.18 | 10000 | 437 | | 2025.04.24 | 10000 | 164 | | 2025.04.26 | 10000 | 108 | | 2025.04.28 | 10000 | 91 | | 2025.05.01 | 10000 | 145 woops | | 2025.05.03 | 624228[^1] | 1585 | | 2025.05.05 | 8964[^2] | 931 | | 2025.05.06 | 4401[^2] | 726 | [^1]: a complete crater run [^2]: only testing crates which may have regressed from the above run ### in-flight changes - rust-lang#140711 - rust-lang#140713 - rust-lang#140712 - rust-lang#136997 - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140260 - rust-lang#140375 - rust-lang#140405 - look into blanket impls for opaque type infer vars as well - rust-lang#140496 - double recursion limit in the new solver r? `@ghost`
Rollup merge of rust-lang#140607 - lcnr:opaque-type-storage, r=compiler-errors support duplicate entries in the opaque_type_storage Necessary for the new solver as we may unify keys when eagerly resolving for canonical queries. See the relevant comment when instantiating query responses: ```rust // We eagerly resolve inference variables when computing the query response. // This can cause previously distinct opaque type keys to now be structurally equal. // // To handle this, we store any duplicate entries in a separate list to check them // at the end of typeck/borrowck. We could alternatively eagerly equate the hidden // types here. However, doing so is difficult as it may result in nested goals and // any errors may make it harder to track the control flow for diagnostics. if let Some(prev) = prev { self.delegate.add_duplicate_opaque_type(key, prev, self.origin_span); } ``` This will be far more relevant with rust-lang#140497. r? `@compiler-errors`
☔ The latest upstream changes (presumably #140590) made this pull request unmergeable. Please resolve the merge conflicts. |
80d7470
to
39600ee
Compare
The job Click to see the possible cause of the failure (guessed by this bot)
|
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 [first perf run](rust-lang#133502 (comment)) 👻 ### crater This does not detect hangs or memory issues. | date | #crates | #regressions | | ---- | ------- | ------------ | | 2025.04.11 | 100 | 2 | | 2025.04.11 | 1000 | 27 | | 2025.04.17 | 10000 | 456 | | 2025.04.18 | 10000 | 437 | | 2025.04.24 | 10000 | 164 | | 2025.04.26 | 10000 | 108 | | 2025.04.28 | 10000 | 91 | | 2025.05.01 | 10000 | 145 woops | | 2025.05.03 | 624228[^1] | 1585 | | 2025.05.05 | 8964[^2] | 931 | | 2025.05.06 | 4401[^2] | 726 | | 2025.05.07 | 2704[^2] | 668 | [^1]: a complete crater run [^2]: only testing crates which may have regressed from the above run ### in-flight changes - rust-lang#140712 - rust-lang#136997 - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140375 - rust-lang#140405 - look into blanket impls for opaque type infer vars as well - rust-lang#140496 - double recursion limit in the new solver r? `@ghost`
☔ The latest upstream changes (presumably #141066) made this pull request unmergeable. Please resolve the merge conflicts. |
Relies on #139587.
Fixes rust-lang/trait-system-refactor-initiative#135.
Needs all the things: cleanup, tests, Types FCP.
The following snippet hits the assert from #140641 and I don't fully understand why yet 🤔 it only triggers if there's an error during HIR typeck. We then handle opaque type uses without any opaque types in the storage and then add a use when normalizing the return type during writeback. I guess if checking an expr failed we never actually equate it with the expectation?
r? @compiler-errors