Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
//! Ensure `-Clink-dead-code=true` with `generic_const_exprs` and
//! `min_generic_const_args` doesn't ICE in mono item collection.
//!
//! Regression test for <https://github.com/rust-lang/rust/issues/149035>.

//@ build-pass
//@ compile-flags: -Clink-dead-code=true

#![feature(min_generic_const_args, generic_const_exprs)]

type const L: usize = 4;
Copy link
Copy Markdown
Member

@TaKO8Ki TaKO8Ki Apr 1, 2026

Choose a reason for hiding this comment

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

Do you have any reason why this line is different from one in provided code in the issue? #149035 (comment)

Ideally, we need to verify with that test that the ICE occurs without the fix in #152129.

Copy link
Copy Markdown
Contributor Author

@jeanibarz jeanibarz Apr 1, 2026

Choose a reason for hiding this comment

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

The original const L doesn't compile on current main, as #152129 both fixed the ICE and introduced type const syntax for free consts, so I had to adapt the reproducer.

I verified with rustup:

  • nightly-2025-11-17 (same as the issue): const L ICEs in mono item collection
  • nightly-2026-02-05 (day before MGCA: require #[type_const] on free consts too #152129 merged): const L still ICEs, type const is a parse error
  • current nightly: const L gets a hard error, type const L compiles cleanly

So there's no nightly where type const exists and the ICE is still present, as the syntax was introduced by the same PR that fixed the bug. That means this test can't directly catch a revert of #152129 (the syntax would vanish too). It's more of a smoke test for the const-in-generic-arg + -Clink-dead-code=true path in mono item collection.

Happy to drop it if you don't think that's useful enough, or adjust the approach if you have something else in mind.

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.

I don't think we need to test with type const

So I think it would have been more appropriate to close the issue with obsolete instead of adding E-needs-test labels.

I'll close the issue and PR, thanks for your contribution :)

trait Print<const N: usize> {
fn print() -> usize {
N
}
}
struct Printer;
impl Print<L> for Printer {}

fn main() {}
Loading