aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve/rust-ast-resolve.cc
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2021-11-16 17:46:08 +0000
committerPhilip Herron <philip.herron@embecosm.com>2021-11-17 16:16:20 +0000
commite584c6f8a7805b1ddc9fe97065cd8f1bac734fc2 (patch)
tree9955b75660c3deb97fe1e9e4e25fd2ded1dc98c8 /gcc/rust/resolve/rust-ast-resolve.cc
parent2547e60d2fca2a323a1b16e04c595aeeec598bc1 (diff)
downloadgcc-e584c6f8a7805b1ddc9fe97065cd8f1bac734fc2.zip
gcc-e584c6f8a7805b1ddc9fe97065cd8f1bac734fc2.tar.gz
gcc-e584c6f8a7805b1ddc9fe97065cd8f1bac734fc2.tar.bz2
Generic segments must be appended to the prefix and not override
Diffstat (limited to 'gcc/rust/resolve/rust-ast-resolve.cc')
-rw-r--r--gcc/rust/resolve/rust-ast-resolve.cc20
1 files changed, 13 insertions, 7 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve.cc b/gcc/rust/resolve/rust-ast-resolve.cc
index 45daa02..9a0d349 100644
--- a/gcc/rust/resolve/rust-ast-resolve.cc
+++ b/gcc/rust/resolve/rust-ast-resolve.cc
@@ -439,8 +439,10 @@ ResolveTypeToCanonicalPath::visit (AST::TypePathSegmentGeneric &seg)
if (!seg.has_generic_args ())
{
- result = CanonicalPath::new_seg (seg.get_node_id (),
- seg.get_ident_segment ().as_string ());
+ auto ident_segment
+ = CanonicalPath::new_seg (seg.get_node_id (),
+ seg.get_ident_segment ().as_string ());
+ result = result.append (ident_segment);
return;
}
@@ -454,14 +456,18 @@ ResolveTypeToCanonicalPath::visit (AST::TypePathSegmentGeneric &seg)
{
std::string generics
= canonicalize_generic_args (seg.get_generic_args ());
- result = CanonicalPath::new_seg (seg.get_node_id (),
- seg.get_ident_segment ().as_string ()
- + "::" + generics);
+ auto generic_segment
+ = CanonicalPath::new_seg (seg.get_node_id (),
+ seg.get_ident_segment ().as_string ()
+ + "::" + generics);
+ result = result.append (generic_segment);
return;
}
- result = CanonicalPath::new_seg (seg.get_node_id (),
- seg.get_ident_segment ().as_string ());
+ auto ident_segment
+ = CanonicalPath::new_seg (seg.get_node_id (),
+ seg.get_ident_segment ().as_string ());
+ result = result.append (ident_segment);
}
void