aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2022-02-17 16:36:34 +0100
committerArthur Cohen <arthur.cohen@embecosm.com>2022-02-18 09:10:55 +0100
commit0e15b89839170cb6c9115cfc57310af2170423a0 (patch)
tree72b1cf54a3a6c8ed1584defaa2964e47b10428c9 /gcc
parent425ebda24393eb4f40190228b7ef4b69e6253251 (diff)
downloadgcc-0e15b89839170cb6c9115cfc57310af2170423a0.zip
gcc-0e15b89839170cb6c9115cfc57310af2170423a0.tar.gz
gcc-0e15b89839170cb6c9115cfc57310af2170423a0.tar.bz2
struct pattern: Add location on struct name
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/ast/rust-pattern.h6
-rw-r--r--gcc/rust/parse/rust-parse-impl.h6
2 files changed, 7 insertions, 5 deletions
diff --git a/gcc/rust/ast/rust-pattern.h b/gcc/rust/ast/rust-pattern.h
index 3b8dbd7..5d937d7 100644
--- a/gcc/rust/ast/rust-pattern.h
+++ b/gcc/rust/ast/rust-pattern.h
@@ -848,18 +848,18 @@ class StructPattern : public Pattern
// bool has_struct_pattern_elements;
StructPatternElements elems;
- // TODO: should this store location data? Accessor uses path location data.
NodeId node_id;
+ Location locus;
public:
std::string as_string () const override;
// Constructs a struct pattern from specified StructPatternElements
- StructPattern (PathInExpression struct_path,
+ StructPattern (PathInExpression struct_path, Location locus,
StructPatternElements elems
= StructPatternElements::create_empty ())
: path (std::move (struct_path)), elems (std::move (elems)),
- node_id (Analysis::Mappings::get ()->get_next_node_id ())
+ node_id (Analysis::Mappings::get ()->get_next_node_id ()), locus (locus)
{}
/* TODO: constructor to construct via elements included in
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h
index c35595c..2260a95 100644
--- a/gcc/rust/parse/rust-parse-impl.h
+++ b/gcc/rust/parse/rust-parse-impl.h
@@ -10603,7 +10603,8 @@ Parser<ManagedTokenSource>::parse_pattern ()
}
return std::unique_ptr<AST::StructPattern> (
- new AST::StructPattern (std::move (path), std::move (elems)));
+ new AST::StructPattern (std::move (path), t->get_locus (),
+ std::move (elems)));
}
default:
// assume path in expression
@@ -11057,7 +11058,8 @@ Parser<ManagedTokenSource>::parse_ident_leading_pattern ()
rust_debug ("successfully parsed struct pattern");
return std::unique_ptr<AST::StructPattern> (
- new AST::StructPattern (std::move (path), std::move (elems)));
+ new AST::StructPattern (std::move (path), initial_tok->get_locus (),
+ std::move (elems)));
}
case DOT_DOT_EQ:
case ELLIPSIS: {