diff options
author | Philip Herron <philip.herron@embecosm.com> | 2021-11-05 12:31:31 +0000 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2021-11-05 12:31:59 +0000 |
commit | d2f92e6a73338c986601a071b8641c051e700aba (patch) | |
tree | 8d4471a6232d4893e3e77e16a198fa18bdbd07d6 /gcc/rust/hir | |
parent | 8e992e371bbd896c8b605e1ebade5cad80b1b411 (diff) | |
download | gcc-d2f92e6a73338c986601a071b8641c051e700aba.zip gcc-d2f92e6a73338c986601a071b8641c051e700aba.tar.gz gcc-d2f92e6a73338c986601a071b8641c051e700aba.tar.bz2 |
Add is_item helper to AST and HIR
BlockExpr can contain Items and Stmts this allows us to differentiate
between them on the Stmt level.
Diffstat (limited to 'gcc/rust/hir')
-rw-r--r-- | gcc/rust/hir/tree/rust-hir-stmt.h | 6 | ||||
-rw-r--r-- | gcc/rust/hir/tree/rust-hir.h | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/rust/hir/tree/rust-hir-stmt.h b/gcc/rust/hir/tree/rust-hir-stmt.h index cc61142..29e98fa 100644 --- a/gcc/rust/hir/tree/rust-hir-stmt.h +++ b/gcc/rust/hir/tree/rust-hir-stmt.h @@ -41,6 +41,8 @@ public: void accept_vis (HIRVisitor &vis) override; + bool is_item () const override final { return false; } + protected: /* Use covariance to implement clone function as returning this object rather * than base */ @@ -119,6 +121,8 @@ public: HIR::Pattern *get_pattern () { return variables_pattern.get (); } + bool is_item () const override final { return false; } + protected: /* Use covariance to implement clone function as returning this object rather * than base */ @@ -136,6 +140,8 @@ class ExprStmt : public Stmt public: Location get_locus () const override final { return locus; } + bool is_item () const override final { return false; } + protected: ExprStmt (Analysis::NodeMapping mappings, Location locus) : Stmt (std::move (mappings)), locus (locus) diff --git a/gcc/rust/hir/tree/rust-hir.h b/gcc/rust/hir/tree/rust-hir.h index d7977b4..d001eb1 100644 --- a/gcc/rust/hir/tree/rust-hir.h +++ b/gcc/rust/hir/tree/rust-hir.h @@ -104,6 +104,8 @@ public: const Analysis::NodeMapping &get_mappings () const { return mappings; } + virtual bool is_item () const = 0; + protected: Stmt (Analysis::NodeMapping mappings) : mappings (std::move (mappings)) {} @@ -140,6 +142,8 @@ public: AST::AttrVec &get_outer_attrs () { return outer_attrs; } const AST::AttrVec &get_outer_attrs () const { return outer_attrs; } + bool is_item () const override final { return true; } + protected: // Constructor Item (Analysis::NodeMapping mappings, |