Skip to content

Suggest usize instead of placeholder type for array length constants - #160906

Merged
rust-bors[bot] merged 6 commits into
rust-lang:mainfrom
lsunsi:push-ysqvmnlvvzwr
Sep 5, 2026
Merged

Suggest usize instead of placeholder type for array length constants#160906
rust-bors[bot] merged 6 commits into
rust-lang:mainfrom
lsunsi:push-ysqvmnlvvzwr

Conversation

@lsunsi

@lsunsi lsunsi commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Fixes #159487

This PR makes the type suggestion for a anonymous constant used as an array length or repeat expression less generic: usize instead of placeholder type.

I divided the work in several commits so I could track my own progress and test my understanding. I could squash them all into one if needed.

Some ideas were pulled from #160155 , which is why the PR might look similar. That said I only used it as reference when I got stuck, because I was prioritizing my own learning instead of just quickly pushing the changes (hence, many commits).

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Aug 11, 2026
@rustbot

rustbot commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

r? @davidtwco

rustbot has assigned @davidtwco.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler
  • compiler expanded to 75 candidates
  • Random selection from 18 candidates

Comment thread compiler/rustc_resolve/src/diagnostics/mod.rs Outdated
@lsunsi lsunsi changed the title Push ysqvmnlvvzwr Suggest usize instead of placeholder type for array length constants Aug 11, 2026
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@lsunsi
lsunsi force-pushed the push-ysqvmnlvvzwr branch from 0094f3f to 29a62a7 Compare August 11, 2026 18:16

@davidtwco davidtwco left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, one suggestion

View changes since this review

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe split this into two diagnostics so that the diagnostics w/ a concrete usize suggestion needn't be "has-placeholders"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@davidtwco Got it, I tried doing just that in 520b339. Does it make sense? The one question I was left with was if the usize branch is now "machine-applicable" instead of "has-placeholder".
I think it looks better this way!

@lsunsi
lsunsi force-pushed the push-ysqvmnlvvzwr branch from 29a62a7 to 520b339 Compare August 19, 2026 19:55
@rustbot

rustbot commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

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.

@lsunsi
lsunsi requested a review from davidtwco August 20, 2026 17:58
@davidtwco

Copy link
Copy Markdown
Member

Thanks, sorry for the wait on the re-review

@bors r+ rollup

@rust-bors

rust-bors Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 520b339 has been approved by davidtwco

It is now in the queue for this repository.

@rust-bors rust-bors Bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 4, 2026
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Sep 4, 2026
Suggest usize instead of placeholder type for array length constants

Fixes rust-lang#159487

This PR makes the type suggestion for a anonymous constant used as an array length or repeat expression less generic: usize instead of placeholder type.

I divided the work in several commits so I could track my own progress and test my understanding. I could squash them all into one if needed.

Some ideas were pulled from rust-lang#160155 , which is why the PR might look similar. That said I only used it as reference when I got stuck, because I was prioritizing my own learning instead of just quickly pushing the changes (hence, many commits).
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Sep 4, 2026
Suggest usize instead of placeholder type for array length constants

Fixes rust-lang#159487

This PR makes the type suggestion for a anonymous constant used as an array length or repeat expression less generic: usize instead of placeholder type.

I divided the work in several commits so I could track my own progress and test my understanding. I could squash them all into one if needed.

Some ideas were pulled from rust-lang#160155 , which is why the PR might look similar. That said I only used it as reference when I got stuck, because I was prioritizing my own learning instead of just quickly pushing the changes (hence, many commits).
rust-bors Bot pushed a commit that referenced this pull request Sep 4, 2026
Rollup of 25 pull requests

Successful merges:

 - #159074 ([PAC] FnAbi, llvm.ptrauth.resign and Session API change (2/8))
 - #159792 (A more readable debug map for IndexMaps)
 - #161895 (std::sys::pal::sgx: fix mismatched alloc/free alignment)
 - #161900 (bootstrap: Include feature-gated items in bootstrap tool docs)
 - #161940 (Promote `wasm32-wasip3` to a tier 2 target)
 - #162072 (Add new Tier-3 target: `powerpc64-sony-ps3`)
 - #162179 (type system const items via direct rhs)
 - #162277 (Introduce `rustc_middle::middel::resolve`)
 - #162285 (box: fixup map/try_map deallocate calls)
 - #162286 (string: don't unwind prematurely)
 - #162289 (alloc: a bunch of safety comments)
 - #162292 (Update `askama` version to `0.16.1`)
 - #160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`)
 - #160906 (Suggest usize instead of placeholder type for array length constants)
 - #160936 (traits: Represent live alias arguments as bitsets)
 - #161400 (Improve diagnostics for references to closures)
 - #161656 (Suggest mutable references for FnMut closure arguments)
 - #161711 (Add more splat fn type tests)
 - #161786 (Make `tcx.def_id_partial_cmp` public)
 - #161953 (sanitizers: Implicitly disable mutually exclusive sanitizers)
 - #162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute)
 - #162212 (Implement `Rng` for `Box`)
 - #162246 (Fix incorrect meta span)
 - #162266 (std: fix typo)
 - #162291 (Add regression test from 1.98.1)
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Sep 4, 2026
Suggest usize instead of placeholder type for array length constants

Fixes rust-lang#159487

This PR makes the type suggestion for a anonymous constant used as an array length or repeat expression less generic: usize instead of placeholder type.

I divided the work in several commits so I could track my own progress and test my understanding. I could squash them all into one if needed.

Some ideas were pulled from rust-lang#160155 , which is why the PR might look similar. That said I only used it as reference when I got stuck, because I was prioritizing my own learning instead of just quickly pushing the changes (hence, many commits).
rust-bors Bot pushed a commit that referenced this pull request Sep 4, 2026
Rollup of 25 pull requests

Successful merges:

 - #159074 ([PAC] FnAbi, llvm.ptrauth.resign and Session API change (2/8))
 - #159792 (A more readable debug map for IndexMaps)
 - #160745 (make closures act like MaybeDangling)
 - #161895 (std::sys::pal::sgx: fix mismatched alloc/free alignment)
 - #161940 (Promote `wasm32-wasip3` to a tier 2 target)
 - #162072 (Add new Tier-3 target: `powerpc64-sony-ps3`)
 - #162179 (type system const items via direct rhs)
 - #162277 (Introduce `rustc_middle::middel::resolve`)
 - #162285 (box: fixup map/try_map deallocate calls)
 - #162286 (string: don't unwind prematurely)
 - #162289 (alloc: a bunch of safety comments)
 - #162292 (Update `askama` version to `0.16.1`)
 - #160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`)
 - #160906 (Suggest usize instead of placeholder type for array length constants)
 - #160936 (traits: Represent live alias arguments as bitsets)
 - #161400 (Improve diagnostics for references to closures)
 - #161656 (Suggest mutable references for FnMut closure arguments)
 - #161711 (Add more splat fn type tests)
 - #161786 (Make `tcx.def_id_partial_cmp` public)
 - #161953 (sanitizers: Implicitly disable mutually exclusive sanitizers)
 - #162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute)
 - #162212 (Implement `Rng` for `Box`)
 - #162246 (Fix incorrect meta span)
 - #162266 (std: fix typo)
 - #162291 (Add regression test from 1.98.1)
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Sep 4, 2026
Suggest usize instead of placeholder type for array length constants

Fixes rust-lang#159487

This PR makes the type suggestion for a anonymous constant used as an array length or repeat expression less generic: usize instead of placeholder type.

I divided the work in several commits so I could track my own progress and test my understanding. I could squash them all into one if needed.

Some ideas were pulled from rust-lang#160155 , which is why the PR might look similar. That said I only used it as reference when I got stuck, because I was prioritizing my own learning instead of just quickly pushing the changes (hence, many commits).
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Sep 4, 2026
Suggest usize instead of placeholder type for array length constants

Fixes rust-lang#159487

This PR makes the type suggestion for a anonymous constant used as an array length or repeat expression less generic: usize instead of placeholder type.

I divided the work in several commits so I could track my own progress and test my understanding. I could squash them all into one if needed.

Some ideas were pulled from rust-lang#160155 , which is why the PR might look similar. That said I only used it as reference when I got stuck, because I was prioritizing my own learning instead of just quickly pushing the changes (hence, many commits).
rust-bors Bot pushed a commit that referenced this pull request Sep 4, 2026
Rollup of 27 pull requests

Successful merges:

 - #159074 ([PAC] FnAbi, llvm.ptrauth.resign and Session API change (2/8))
 - #159792 (A more readable debug map for IndexMaps)
 - #160745 (make closures act like MaybeDangling)
 - #161940 (Promote `wasm32-wasip3` to a tier 2 target)
 - #162030 (Prevent `--test` to be used in `rustdoc-html` testsuite)
 - #162072 (Add new Tier-3 target: `powerpc64-sony-ps3`)
 - #162179 (type system const items via direct rhs)
 - #162262 (Avoid manually instantiating some binders in error reporting with `-Znext-solver`)
 - #162277 (Introduce `rustc_middle::middel::resolve`)
 - #162285 (box: fixup map/try_map deallocate calls)
 - #162286 (string: don't unwind prematurely)
 - #162289 (alloc: a bunch of safety comments)
 - #162290 (abby test DSL: AliasTyOutlivesViaEnv)
 - #162292 (Update `askama` version to `0.16.1`)
 - #160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`)
 - #160906 (Suggest usize instead of placeholder type for array length constants)
 - #160936 (traits: Represent live alias arguments as bitsets)
 - #161400 (Improve diagnostics for references to closures)
 - #161656 (Suggest mutable references for FnMut closure arguments)
 - #161711 (Add more splat fn type tests)
 - #161786 (Make `tcx.def_id_partial_cmp` public)
 - #161953 (sanitizers: Implicitly disable mutually exclusive sanitizers)
 - #162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute)
 - #162212 (Implement `Rng` for `Box`)
 - #162246 (Fix incorrect meta span)
 - #162266 (std: fix typo)
 - #162291 (Add regression test from 1.98.1)
rust-bors Bot pushed a commit that referenced this pull request Sep 5, 2026
…uwer

Rollup of 25 pull requests

Successful merges:

 - #162072 (Add new Tier-3 target: `powerpc64-sony-ps3`)
 - #162179 (type system const items via direct rhs)
 - #162255 (let people change rustc-dev-guide in-tree)
 - #162262 (Avoid manually instantiating some binders in error reporting with `-Znext-solver`)
 - #162277 (Introduce `rustc_middle::middel::resolve`)
 - #162285 (box: fixup map/try_map deallocate calls)
 - #162286 (string: don't unwind prematurely)
 - #162289 (alloc: a bunch of safety comments)
 - #162290 (abby test DSL: AliasTyOutlivesViaEnv)
 - #162292 (Update `askama` version to `0.16.1`)
 - #160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`)
 - #160906 (Suggest usize instead of placeholder type for array length constants)
 - #160936 (traits: Represent live alias arguments as bitsets)
 - #161394 (fix `is_homogeneous_aggregate`: use unit size, not total size )
 - #161400 (Improve diagnostics for references to closures)
 - #161656 (Suggest mutable references for FnMut closure arguments)
 - #161711 (Add more splat fn type tests)
 - #161786 (Make `tcx.def_id_partial_cmp` public)
 - #161953 (sanitizers: Implicitly disable mutually exclusive sanitizers)
 - #162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute)
 - #162212 (Implement `Rng` for `Box`)
 - #162246 (Fix incorrect meta span)
 - #162266 (std: fix typo)
 - #162291 (Add regression test from 1.98.1)
 - #162303 (Fix a minor spelling error in `library/std/src/sys/fs/unix.rs`)
Zalathar added a commit to Zalathar/rust that referenced this pull request Sep 5, 2026
Suggest usize instead of placeholder type for array length constants

Fixes rust-lang#159487

This PR makes the type suggestion for a anonymous constant used as an array length or repeat expression less generic: usize instead of placeholder type.

I divided the work in several commits so I could track my own progress and test my understanding. I could squash them all into one if needed.

Some ideas were pulled from rust-lang#160155 , which is why the PR might look similar. That said I only used it as reference when I got stuck, because I was prioritizing my own learning instead of just quickly pushing the changes (hence, many commits).
rust-bors Bot pushed a commit that referenced this pull request Sep 5, 2026
…uwer

Rollup of 25 pull requests

Successful merges:

 - #162072 (Add new Tier-3 target: `powerpc64-sony-ps3`)
 - #162179 (type system const items via direct rhs)
 - #162255 (let people change rustc-dev-guide in-tree)
 - #162262 (Avoid manually instantiating some binders in error reporting with `-Znext-solver`)
 - #162277 (Introduce `rustc_middle::middel::resolve`)
 - #162285 (box: fixup map/try_map deallocate calls)
 - #162286 (string: don't unwind prematurely)
 - #162289 (alloc: a bunch of safety comments)
 - #162290 (abby test DSL: AliasTyOutlivesViaEnv)
 - #162292 (Update `askama` version to `0.16.1`)
 - #160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`)
 - #160906 (Suggest usize instead of placeholder type for array length constants)
 - #160936 (traits: Represent live alias arguments as bitsets)
 - #161394 (fix `is_homogeneous_aggregate`: use unit size, not total size )
 - #161400 (Improve diagnostics for references to closures)
 - #161656 (Suggest mutable references for FnMut closure arguments)
 - #161711 (Add more splat fn type tests)
 - #161786 (Make `tcx.def_id_partial_cmp` public)
 - #161953 (sanitizers: Implicitly disable mutually exclusive sanitizers)
 - #162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute)
 - #162212 (Implement `Rng` for `Box`)
 - #162246 (Fix incorrect meta span)
 - #162266 (std: fix typo)
 - #162291 (Add regression test from 1.98.1)
 - #162303 (Fix a minor spelling error in `library/std/src/sys/fs/unix.rs`)
@rust-bors
rust-bors Bot merged commit a108d58 into rust-lang:main Sep 5, 2026
13 checks passed
@rustbot rustbot added this to the 1.100.0 milestone Sep 5, 2026
rust-bors Bot pushed a commit that referenced this pull request Sep 5, 2026
Rollup merge of #160906 - lsunsi:push-ysqvmnlvvzwr, r=davidtwco

Suggest usize instead of placeholder type for array length constants

Fixes #159487

This PR makes the type suggestion for a anonymous constant used as an array length or repeat expression less generic: usize instead of placeholder type.

I divided the work in several commits so I could track my own progress and test my understanding. I could squash them all into one if needed.

Some ideas were pulled from #160155 , which is why the PR might look similar. That said I only used it as reference when I got stuck, because I was prioritizing my own learning instead of just quickly pushing the changes (hence, many commits).
@rust-timer

Copy link
Copy Markdown
Collaborator

Note

This PR was benchmarked as part of triage of its containing rollup: triage URL.

Finished benchmarking commit (e3fa2db): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

Instruction count

This perf run didn't have relevant results for this metric.

Max RSS (memory usage)

Results (primary -3.2%, secondary 2.2%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
3.5% [3.5%, 3.5%] 1
Regressions ❌
(secondary)
2.2% [2.2%, 2.2%] 1
Improvements ✅
(primary)
-6.5% [-10.3%, -2.7%] 2
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -3.2% [-10.3%, 3.5%] 3

Cycles

Results (secondary -2.2%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.2% [-2.4%, -2.0%] 2
All ❌✅ (primary) - - 0

Binary size

This perf run didn't have relevant results for this metric.

Bootstrap: missing data
Artifact size: 403.29 MiB -> 403.37 MiB (0.02%)

renovate-bot pushed a commit to renovate-bot/rust-lang-_-compiler-builtins that referenced this pull request Sep 7, 2026
…uwer

Rollup of 25 pull requests

Successful merges:

 - rust-lang/rust#162072 (Add new Tier-3 target: `powerpc64-sony-ps3`)
 - rust-lang/rust#162179 (type system const items via direct rhs)
 - rust-lang/rust#162255 (let people change rustc-dev-guide in-tree)
 - rust-lang/rust#162262 (Avoid manually instantiating some binders in error reporting with `-Znext-solver`)
 - rust-lang/rust#162277 (Introduce `rustc_middle::middel::resolve`)
 - rust-lang/rust#162285 (box: fixup map/try_map deallocate calls)
 - rust-lang/rust#162286 (string: don't unwind prematurely)
 - rust-lang/rust#162289 (alloc: a bunch of safety comments)
 - rust-lang/rust#162290 (abby test DSL: AliasTyOutlivesViaEnv)
 - rust-lang/rust#162292 (Update `askama` version to `0.16.1`)
 - rust-lang/rust#160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`)
 - rust-lang/rust#160906 (Suggest usize instead of placeholder type for array length constants)
 - rust-lang/rust#160936 (traits: Represent live alias arguments as bitsets)
 - rust-lang/rust#161394 (fix `is_homogeneous_aggregate`: use unit size, not total size )
 - rust-lang/rust#161400 (Improve diagnostics for references to closures)
 - rust-lang/rust#161656 (Suggest mutable references for FnMut closure arguments)
 - rust-lang/rust#161711 (Add more splat fn type tests)
 - rust-lang/rust#161786 (Make `tcx.def_id_partial_cmp` public)
 - rust-lang/rust#161953 (sanitizers: Implicitly disable mutually exclusive sanitizers)
 - rust-lang/rust#162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute)
 - rust-lang/rust#162212 (Implement `Rng` for `Box`)
 - rust-lang/rust#162246 (Fix incorrect meta span)
 - rust-lang/rust#162266 (std: fix typo)
 - rust-lang/rust#162291 (Add regression test from 1.98.1)
 - rust-lang/rust#162303 (Fix a minor spelling error in `library/std/src/sys/fs/unix.rs`)
asukaminato0721 pushed a commit to asukaminato0721/rust-analyzer that referenced this pull request Sep 7, 2026
…uwer

Rollup of 25 pull requests

Successful merges:

 - rust-lang/rust#162072 (Add new Tier-3 target: `powerpc64-sony-ps3`)
 - rust-lang/rust#162179 (type system const items via direct rhs)
 - rust-lang/rust#162255 (let people change rustc-dev-guide in-tree)
 - rust-lang/rust#162262 (Avoid manually instantiating some binders in error reporting with `-Znext-solver`)
 - rust-lang/rust#162277 (Introduce `rustc_middle::middel::resolve`)
 - rust-lang/rust#162285 (box: fixup map/try_map deallocate calls)
 - rust-lang/rust#162286 (string: don't unwind prematurely)
 - rust-lang/rust#162289 (alloc: a bunch of safety comments)
 - rust-lang/rust#162290 (abby test DSL: AliasTyOutlivesViaEnv)
 - rust-lang/rust#162292 (Update `askama` version to `0.16.1`)
 - rust-lang/rust#160509 (Remove `RegionExt`; move methods to `Region` in `rustc_type_ir`)
 - rust-lang/rust#160906 (Suggest usize instead of placeholder type for array length constants)
 - rust-lang/rust#160936 (traits: Represent live alias arguments as bitsets)
 - rust-lang/rust#161394 (fix `is_homogeneous_aggregate`: use unit size, not total size )
 - rust-lang/rust#161400 (Improve diagnostics for references to closures)
 - rust-lang/rust#161656 (Suggest mutable references for FnMut closure arguments)
 - rust-lang/rust#161711 (Add more splat fn type tests)
 - rust-lang/rust#161786 (Make `tcx.def_id_partial_cmp` public)
 - rust-lang/rust#161953 (sanitizers: Implicitly disable mutually exclusive sanitizers)
 - rust-lang/rust#162155 (add suggestion for `rustc_allowed_through_unstable_modules` attribute)
 - rust-lang/rust#162212 (Implement `Rng` for `Box`)
 - rust-lang/rust#162246 (Fix incorrect meta span)
 - rust-lang/rust#162266 (std: fix typo)
 - rust-lang/rust#162291 (Add regression test from 1.98.1)
 - rust-lang/rust#162303 (Fix a minor spelling error in `library/std/src/sys/fs/unix.rs`)
@lsunsi
lsunsi deleted the push-ysqvmnlvvzwr branch September 7, 2026 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use usize when suggesting creating a const for array lenghts

5 participants