https://gcc.gnu.org/g:a04da45d8722e4a9eae4b2d1e995ff9b8f658751
commit r17-4283-ga04da45d8722e4a9eae4b2d1e995ff9b8f658751 Author: Philip Herron <[email protected]> Date: Sun Aug 23 14:17:19 2026 +0100 gccrs: Add missing unconstrained type parameters walker for const generics Fixes Rust-GCC/gccrs#4805 gcc/rust/ChangeLog: * typecheck/rust-hir-type-check-base.cc (walk_type_to_constrain): walk const generics gcc/testsuite/ChangeLog: * rust/compile/issue-4805.rs: New test. Signed-off-by: Philip Herron <[email protected]> Diff: --- gcc/rust/typecheck/rust-hir-type-check-base.cc | 8 ++++++++ gcc/testsuite/rust/compile/issue-4805.rs | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/gcc/rust/typecheck/rust-hir-type-check-base.cc b/gcc/rust/typecheck/rust-hir-type-check-base.cc index 399b9594609a..97ff55400c3d 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-base.cc +++ b/gcc/rust/typecheck/rust-hir-type-check-base.cc @@ -101,6 +101,7 @@ walk_type_to_constrain (std::set<HirId> &constrained_symbols, TyTy::BaseType &r) { auto &arr = static_cast<TyTy::ArrayType &> (r); walk_type_to_constrain (constrained_symbols, *arr.get_element_type ()); + walk_type_to_constrain (constrained_symbols, *arr.get_capacity ()); } break; case TyTy::TypeKind::FNDEF: @@ -117,6 +118,13 @@ walk_type_to_constrain (std::set<HirId> &constrained_symbols, TyTy::BaseType &r) constrained_symbols.insert (param.get_ty_ref ()); } break; + case TyTy::TypeKind::CONST: + { + auto *constant = r.as_const_type (); + if (constant->const_kind () == TyTy::BaseConstType::ConstKind::Decl) + constrained_symbols.insert (r.get_ty_ref ()); + } + break; case TyTy::SLICE: { auto &slice = static_cast<TyTy::SliceType &> (r); diff --git a/gcc/testsuite/rust/compile/issue-4805.rs b/gcc/testsuite/rust/compile/issue-4805.rs new file mode 100644 index 000000000000..300e3d5aa08d --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-4805.rs @@ -0,0 +1,7 @@ +#![no_core] +#![feature(no_core)] +#![feature(min_const_generics)] + +trait A {} + +impl<const N: usize> A for [u8; N] {}
