Migrate PrimitiveOperator to value semantics (#606)

* Make PrimitiveOperator.arguments a value.
* Make operator factory functions take Expressions by value.
This commit is contained in:
Geoff Romer
2021-06-28 15:58:32 -07:00
committed by GitHub
parent 276880ae83
commit 056da4dd5c
5 changed files with 42 additions and 45 deletions
+6 -6
View File
@@ -98,7 +98,7 @@ struct Tuple {
struct PrimitiveOperator {
static constexpr ExpressionKind Kind = ExpressionKind::PrimitiveOp;
Operator op;
std::vector<const Expression*>* arguments;
std::vector<Expression> arguments;
};
struct Call {
@@ -142,12 +142,12 @@ struct Expression {
-> const Expression*;
static auto MakeInt(int line_num, int i) -> const Expression*;
static auto MakeBool(int line_num, bool b) -> const Expression*;
static auto MakeOp(int line_num, Operator op,
std::vector<const Expression*>* args) -> const Expression*;
static auto MakeUnOp(int line_num, enum Operator op, const Expression* arg)
static auto MakeOp(int line_num, Operator op, std::vector<Expression> args)
-> const Expression*;
static auto MakeBinOp(int line_num, enum Operator op, const Expression* arg1,
const Expression* arg2) -> const Expression*;
static auto MakeUnOp(int line_num, enum Operator op, Expression arg)
-> const Expression*;
static auto MakeBinOp(int line_num, enum Operator op, Expression arg1,
Expression arg2) -> const Expression*;
static auto MakeCall(int line_num, const Expression* fun,
const Expression* arg) -> const Expression*;
static auto MakeGetField(int line_num, const Expression* exp,