Add ExprStmt::ExprStmtType WITH_BLOCK and WITHOUT_BLOCK to allow switching

This commit is contained in:
Philip Herron 2022-04-20 18:03:41 +01:00
parent 4eaec85303
commit 53ce1d5ac9
1 changed files with 16 additions and 1 deletions

View File

@ -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 */