From 53ce1d5ac9106bc7427f14c285d782c1023124ec Mon Sep 17 00:00:00 2001 From: Philip Herron Date: Wed, 20 Apr 2022 18:03:41 +0100 Subject: [PATCH] Add ExprStmt::ExprStmtType WITH_BLOCK and WITHOUT_BLOCK to allow switching --- gcc/rust/ast/rust-stmt.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/gcc/rust/ast/rust-stmt.h b/gcc/rust/ast/rust-stmt.h index 942da7f4db5..9d95c3e27e8 100644 --- a/gcc/rust/ast/rust-stmt.h +++ b/gcc/rust/ast/rust-stmt.h @@ -183,8 +183,14 @@ protected: * expression) */ class ExprStmt : public Stmt { - // TODO: add any useful virtual functions +public: + enum ExprStmtType + { + WITH_BLOCK, + WITHOUT_BLOCK + }; +protected: Location locus; public: @@ -192,6 +198,8 @@ public: bool is_item () const override final { return false; } + virtual ExprStmtType get_type () const = 0; + protected: ExprStmt (Location locus) : locus (locus) {} }; @@ -261,6 +269,11 @@ public: return expr; } + ExprStmtType get_type () const override + { + return ExprStmtType::WITHOUT_BLOCK; + }; + protected: /* Use covariance to implement clone function as returning this object rather * than base */ @@ -328,6 +341,8 @@ public: bool is_semicolon_followed () const { return semicolon_followed; } + ExprStmtType get_type () const override { return ExprStmtType::WITH_BLOCK; }; + protected: /* Use covariance to implement clone function as returning this object rather * than base */