diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2025-02-24 12:18:54 +0100 |
---|---|---|
committer | CohenArthur <arthur.cohen@embecosm.com> | 2025-02-25 12:26:38 +0000 |
commit | 9075c9918f3cad3c4e9834d8609214ec557550aa (patch) | |
tree | 7ca41ddc82b7395b8aff92bde0a2ff3d6f06c02b | |
parent | 5b32082a345bafc5a3e997afebc2515451694b23 (diff) | |
download | gcc-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.cc | 4 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/issue-2015.rs | 19 |
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 +} |