diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2022-02-17 16:36:34 +0100 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2022-02-18 09:10:55 +0100 |
commit | 0e15b89839170cb6c9115cfc57310af2170423a0 (patch) | |
tree | 72b1cf54a3a6c8ed1584defaa2964e47b10428c9 /gcc | |
parent | 425ebda24393eb4f40190228b7ef4b69e6253251 (diff) | |
download | gcc-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.h | 6 | ||||
-rw-r--r-- | gcc/rust/parse/rust-parse-impl.h | 6 |
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: { |