-
-
Notifications
You must be signed in to change notification settings - Fork 14.2k
MGCA: Syntactically distinguish anon const const args #149136
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
Conversation
|
Some changes occurred in compiler/rustc_builtin_macros/src/autodiff.rs cc @ZuseZ4 |
|
|
This comment has been minimized.
This comment has been minimized.
a786e30 to
09d75e3
Compare
This comment has been minimized.
This comment has been minimized.
09d75e3 to
5c64af2
Compare
|
Some changes occurred in src/tools/clippy cc @rust-lang/clippy |
|
☔ The latest upstream changes (presumably #149387) made this pull request unmergeable. Please resolve the merge conflicts. |
src/tools/clippy/tests/ui/trait_duplication_in_bounds_assoc_const_eq.fixed
Outdated
Show resolved
Hide resolved
5c64af2 to
8f74277
Compare
This comment has been minimized.
This comment has been minimized.
|
r=me with commits cleaned up |
8f74277 to
0c86a41
Compare
|
@bors r=oli-obk rollup=never |
|
@bors r=oli-obk |
|
💡 This pull request was already approved, no need to approve it again.
|
|
☔ The latest upstream changes (presumably #148477) made this pull request unmergeable. Please resolve the merge conflicts. |
0c86a41 to
acc3a0e
Compare
|
This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed. Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers. |
|
@bors r=oli-obk |
|
@bors r- actually should wait for CI to pass given rebase |
|
@bors r=oli-obk |
|
☀️ Test successful - checks-actions |
What is this?This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.Comparing fa5eda1 (parent) -> dc47a69 (this PR) Test differencesShow 56 test diffsStage 1
Stage 2
Additionally, 42 doctest diffs were found. These are ignored, as they are noisy. Job group index
Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard dc47a69ed94bc88b10b7d500cceacf29b87bcbbe --output-dir test-dashboardAnd then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
|
Finished benchmarking commit (dc47a69): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis benchmark run did not return any relevant results for this metric. Max RSS (memory usage)Results (secondary 0.8%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (secondary -4.0%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 473.976s -> 475.622s (0.35%) |
r? oli-obk
tracking issue: #132980
This PR requires that when
feature(min_generic_const_args)is enabled, anon const const args are syntactically distinguishable from other kinds of args. We useconst { ... }in const argument position to denote an anon const:This restriction is only placed when mgca is enabled. There should be no effect on stable. This restriction is not enforced for unbraced literals which we continue to implicitly wrap in an anon const:
tests/ui/const-generics/mgca/explicit_anon_consts_literals_hack.rsThis restriction allows us to create
DefIds for anon consts only when actually required. When it is syntactically ambiguous whether a const argument is an anon const or not we are forced to conservatively create aDefIdfor every const argument even if it doesn't wind up needing one.This works fine on stable but under
mgcawe can wind up with anon consts nested inside non-anon-const const arguments resulting in a brokenDefIdtree. See #148838 where an anon const arg inside of a path arg winds up with a parent of a conservatively createdDefIdthat doesn't actually correspond to an anon const, resulting in an ICE.With #149114 every field initialiser in a const argument would become a place where there could possibly be an anon const. This would also get worse once we support tuple constructors- now every function argument is a place where there could possibly be an anon const.
We introduce this restriction to avoid creating massive amounts of unused
DefIds that make the parent tree significantly more complicated, and to avoid having to paper over this issue in things likegenerics_of.Fixes #148838
It also must be syntactically clear from context whether
'_means an inference lifetime or an elided lifetime parameter. This restriction will allow us to properly resolve'_in const arguments in mgca. This PR doesn't actually fix handle this, but we could do so trivially after this lands.