From f96018b3ddcef23581eba485f439c54a9652d9fd Mon Sep 17 00:00:00 2001 From: zakrad <49591476+zakrad@users.noreply.github.com> Date: Thu, 20 Aug 2026 12:27:33 +0330 Subject: [PATCH] Add regression test for gce dependency ICE in non-gce crate --- .../auxiliary/dep-with-gce-128525.rs | 18 ++++++++++++++++++ .../dependent-crate-no-gce-128525.rs | 15 +++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 tests/ui/const-generics/generic_const_exprs/auxiliary/dep-with-gce-128525.rs create mode 100644 tests/ui/const-generics/generic_const_exprs/dependent-crate-no-gce-128525.rs diff --git a/tests/ui/const-generics/generic_const_exprs/auxiliary/dep-with-gce-128525.rs b/tests/ui/const-generics/generic_const_exprs/auxiliary/dep-with-gce-128525.rs new file mode 100644 index 0000000000000..3fcb6ad7ee490 --- /dev/null +++ b/tests/ui/const-generics/generic_const_exprs/auxiliary/dep-with-gce-128525.rs @@ -0,0 +1,18 @@ +#![feature(generic_const_exprs)] +#![allow(incomplete_features)] + +pub trait LibTrait { + const NUM: usize; + fn configure(&mut self, cfg: &Config<{ Self::NUM }>); +} + +pub struct Config { + pub config: [u8; N], +} + +pub struct ImplementsTraitOverConstGeneric; + +impl LibTrait for ImplementsTraitOverConstGeneric { + const NUM: usize = N; + fn configure(&mut self, _: &Config<{ Self::NUM }>) {} +} diff --git a/tests/ui/const-generics/generic_const_exprs/dependent-crate-no-gce-128525.rs b/tests/ui/const-generics/generic_const_exprs/dependent-crate-no-gce-128525.rs new file mode 100644 index 0000000000000..c22b9ebe9c8d6 --- /dev/null +++ b/tests/ui/const-generics/generic_const_exprs/dependent-crate-no-gce-128525.rs @@ -0,0 +1,15 @@ +// Regression test for . +// Using a `generic_const_exprs` API from a dependency in a crate that does not +// enable the feature itself used to ICE ("called `Option::unwrap()` on a `None` +// value" in `ty/sty.rs`) instead of compiling. +//@ aux-build: dep-with-gce-128525.rs +//@ build-pass + +extern crate dep_with_gce_128525 as library; + +use library::*; + +fn main() { + let mut inner = ImplementsTraitOverConstGeneric::<4>; + inner.configure(&Config { config: [0, 0, 0, 0] }); +}