diff options
Diffstat (limited to 'gcc/rust/resolve/rust-ast-resolve.cc')
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve.cc | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve.cc b/gcc/rust/resolve/rust-ast-resolve.cc index b4ca34f..4cc1a93 100644 --- a/gcc/rust/resolve/rust-ast-resolve.cc +++ b/gcc/rust/resolve/rust-ast-resolve.cc @@ -375,11 +375,14 @@ ResolveStructExprField::visit (AST::StructExprFieldIdentifier &field) // rust-ast-resolve-type.h void -ResolveTypePath::visit (AST::TypePathSegmentGeneric &seg) +ResolveTypeToSimplePath::visit (AST::TypePathSegmentGeneric &seg) { - AST::GenericArgs &generics = seg.get_generic_args (); - for (auto > : generics.get_type_args ()) - ResolveType::go (gt.get (), UNKNOWN_NODEID); + if (!path_only_flag) + { + AST::GenericArgs &generics = seg.get_generic_args (); + for (auto > : generics.get_type_args ()) + ResolveType::go (gt.get (), UNKNOWN_NODEID); + } if (seg.is_error ()) { @@ -389,14 +392,12 @@ ResolveTypePath::visit (AST::TypePathSegmentGeneric &seg) return; } - if (seg.get_separating_scope_resolution ()) - path_buffer += "::"; - - path_buffer += seg.get_ident_segment ().as_string (); + segs.push_back (AST::SimplePathSegment (seg.get_ident_segment ().as_string (), + seg.get_locus ())); } void -ResolveTypePath::visit (AST::TypePathSegment &seg) +ResolveTypeToSimplePath::visit (AST::TypePathSegment &seg) { if (seg.is_error ()) { @@ -406,10 +407,8 @@ ResolveTypePath::visit (AST::TypePathSegment &seg) return; } - if (seg.get_separating_scope_resolution ()) - path_buffer += "::"; - - path_buffer += seg.get_ident_segment ().as_string (); + segs.push_back (AST::SimplePathSegment (seg.get_ident_segment ().as_string (), + seg.get_locus ())); } // rust-ast-resolve-expr.h @@ -465,8 +464,8 @@ ResolvePath::resolve_path (AST::PathInExpression *expr) } else { - rust_error_at (expr->get_locus (), "unknown path %s", - expr->as_string ().c_str ()); + rust_error_at (expr->get_locus (), "unknown path %s lookup %s", + expr->as_string ().c_str (), path_buf.c_str ()); } } |