From: Arthur Cohen Date: Mon, 24 Feb 2025 11:18:54 +0000 (+0100) Subject: gccrs: expansion: Expand generic args in generic type path segments X-Git-Tag: basepoints/gcc-16~724 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=146dc9483b5597aea3390a3e3641d6c009068525;p=thirdparty%2Fgcc.git gccrs: expansion: Expand generic args in generic type path segments gcc/rust/ChangeLog: * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Correctly visit the generic args of a generic type path segment. gcc/testsuite/ChangeLog: * rust/compile/issue-2015.rs: New test. --- diff --git a/gcc/rust/expand/rust-expand-visitor.cc b/gcc/rust/expand/rust-expand-visitor.cc index 1d131b18180..d4db3137565 100644 --- a/gcc/rust/expand/rust-expand-visitor.cc +++ b/gcc/rust/expand/rust-expand-visitor.cc @@ -488,7 +488,9 @@ ExpandVisitor::visit (AST::PathInExpression &path) void ExpandVisitor::visit (AST::TypePathSegmentGeneric &segment) -{} +{ + expand_generic_args (segment.get_generic_args ()); +} void ExpandVisitor::visit (AST::TypePathSegmentFunction &segment) diff --git a/gcc/testsuite/rust/compile/issue-2015.rs b/gcc/testsuite/rust/compile/issue-2015.rs new file mode 100644 index 00000000000..7789ecda376 --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-2015.rs @@ -0,0 +1,19 @@ +// { dg-additional-options "-frust-compile-until=lowering" } + +macro_rules! impl_foo { + () => { impl Foo } +} + +pub trait Foo {} + +pub trait Bar { + type Baz; +} + +pub fn foo(_value: impl Bar) -> i32 { + 15 +} + +pub fn bar(_value: impl Bar) -> i32 { + 16 +}