aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2025-02-24 12:18:54 +0100
committerCohenArthur <arthur.cohen@embecosm.com>2025-02-25 12:26:38 +0000
commit9075c9918f3cad3c4e9834d8609214ec557550aa (patch)
tree7ca41ddc82b7395b8aff92bde0a2ff3d6f06c02b
parent5b32082a345bafc5a3e997afebc2515451694b23 (diff)
downloadgcc-9075c9918f3cad3c4e9834d8609214ec557550aa.zip
gcc-9075c9918f3cad3c4e9834d8609214ec557550aa.tar.gz
gcc-9075c9918f3cad3c4e9834d8609214ec557550aa.tar.bz2
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.
-rw-r--r--gcc/rust/expand/rust-expand-visitor.cc4
-rw-r--r--gcc/testsuite/rust/compile/issue-2015.rs19
2 files changed, 22 insertions, 1 deletions
diff --git a/gcc/rust/expand/rust-expand-visitor.cc b/gcc/rust/expand/rust-expand-visitor.cc
index 96677e3..b5e65b5 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 0000000..7789ecd
--- /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<Baz = impl_foo!()>) -> i32 {
+ 15
+}
+
+pub fn bar(_value: impl Bar<Baz = impl Foo>) -> i32 {
+ 16
+}