diff options
author | Philip Herron <philip.herron@embecosm.com> | 2021-11-16 17:46:08 +0000 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2021-11-17 16:16:20 +0000 |
commit | e584c6f8a7805b1ddc9fe97065cd8f1bac734fc2 (patch) | |
tree | 9955b75660c3deb97fe1e9e4e25fd2ded1dc98c8 /gcc/rust/resolve/rust-ast-resolve.cc | |
parent | 2547e60d2fca2a323a1b16e04c595aeeec598bc1 (diff) | |
download | gcc-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.cc | 20 |
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 |