Revert to handling Expression by const pointer (#616)

This reverts the bulk of #606, #607, and #611, as well as parts of #588, #605, and #614.
This commit is contained in:
Geoff Romer
2021-07-01 12:33:16 -07:00
committed by GitHub
parent e7a1093eb9
commit 047dfd692e
12 changed files with 235 additions and 245 deletions
+13 -10
View File
@@ -80,23 +80,25 @@ struct Statement {
StatementKind tag;
// Constructors
static auto MakeExpStmt(int line_num, Expression exp) -> const Statement*;
static auto MakeAssign(int line_num, Expression lhs, Expression rhs)
static auto MakeExpStmt(int line_num, const Expression* exp)
-> const Statement*;
static auto MakeVarDef(int line_num, Expression pat, Expression init)
static auto MakeAssign(int line_num, const Expression* lhs,
const Expression* rhs) -> const Statement*;
static auto MakeVarDef(int line_num, const Expression* pat,
const Expression* init) -> const Statement*;
static auto MakeIf(int line_num, const Expression* cond,
const Statement* then_stmt, const Statement* else_stmt)
-> const Statement*;
static auto MakeIf(int line_num, Expression cond, const Statement* then_stmt,
const Statement* else_stmt) -> const Statement*;
static auto MakeReturn(int line_num, Expression e) -> const Statement*;
static auto MakeReturn(int line_num, const Expression* e) -> const Statement*;
static auto MakeSeq(int line_num, const Statement* s1, const Statement* s2)
-> const Statement*;
static auto MakeBlock(int line_num, const Statement* s) -> const Statement*;
static auto MakeWhile(int line_num, Expression cond, const Statement* body)
-> const Statement*;
static auto MakeWhile(int line_num, const Expression* cond,
const Statement* body) -> const Statement*;
static auto MakeBreak(int line_num) -> const Statement*;
static auto MakeContinue(int line_num) -> const Statement*;
static auto MakeMatch(
int line_num, Expression exp,
int line_num, const Expression* exp,
std::list<std::pair<const Expression*, const Statement*>>* clauses)
-> const Statement*;
// Returns an AST node for a continuation statement give its line number and
@@ -110,7 +112,8 @@ struct Statement {
// Returns an AST node for a run statement give its line number and argument.
//
// __run <argument>;
static auto MakeRun(int line_num, Expression argument) -> const Statement*;
static auto MakeRun(int line_num, const Expression* argument)
-> const Statement*;
// Returns an AST node for an await statement give its line number.
//
// __await;