diff --git a/src/Stmt.cc b/src/Stmt.cc index 453e72cc12..a1edb51ee0 100644 --- a/src/Stmt.cc +++ b/src/Stmt.cc @@ -39,8 +39,6 @@ const char* stmt_name(StmtTag t) { "next", "break", "return", - "add", - "delete", "list", "bodylist", "", @@ -904,49 +902,6 @@ TraversalCode SwitchStmt::Traverse(TraversalCallback* cb) const { HANDLE_TC_STMT_POST(tc); } -AddDelStmt::AddDelStmt(StmtTag t, ExprPtr arg_e) : ExprStmt(t, std::move(arg_e)) {} - -bool AddDelStmt::IsPure() const { return false; } - -TraversalCode AddDelStmt::Traverse(TraversalCallback* cb) const { - TraversalCode tc = cb->PreStmt(this); - HANDLE_TC_STMT_PRE(tc); - - // Argument is stored in base class's "e" field. - tc = e->Traverse(cb); - HANDLE_TC_STMT_PRE(tc); - - tc = cb->PostStmt(this); - HANDLE_TC_STMT_POST(tc); -} - -AddStmt::AddStmt(ExprPtr arg_e) : AddDelStmt(STMT_ADD, std::move(arg_e)) { - if ( ! e->CanAdd() ) - Error("illegal add statement"); -} - -ValPtr AddStmt::Exec(Frame* f, StmtFlowType& flow) { - RegisterAccess(); - flow = FLOW_NEXT; - e->Add(f); - return nullptr; -} - -DelStmt::DelStmt(ExprPtr arg_e) : AddDelStmt(STMT_DELETE, std::move(arg_e)) { - if ( e->IsError() ) - return; - - if ( ! e->CanDel() ) - Error("illegal delete statement"); -} - -ValPtr DelStmt::Exec(Frame* f, StmtFlowType& flow) { - RegisterAccess(); - flow = FLOW_NEXT; - e->Delete(f); - return nullptr; -} - EventStmt::EventStmt(EventExprPtr arg_e) : ExprStmt(STMT_EVENT, arg_e), event_expr(std::move(arg_e)) {} ValPtr EventStmt::Exec(Frame* f, StmtFlowType& flow) { diff --git a/src/Stmt.h b/src/Stmt.h index 5e575f0555..d714a61d56 100644 --- a/src/Stmt.h +++ b/src/Stmt.h @@ -228,42 +228,6 @@ protected: std::vector> case_label_type_list; }; -// Helper class. Added for script optimization, but it makes sense -// in terms of factoring even without. -class AddDelStmt : public ExprStmt { -public: - TraversalCode Traverse(TraversalCallback* cb) const override; - - bool IsPure() const override; - - // Optimization-related: - StmtPtr DoReduce(Reducer* c) override; - bool IsReduced(Reducer* c) const override; - -protected: - AddDelStmt(StmtTag t, ExprPtr arg_e); -}; - -class AddStmt final : public AddDelStmt { -public: - explicit AddStmt(ExprPtr e); - - ValPtr Exec(Frame* f, StmtFlowType& flow) override; - - // Optimization-related: - StmtPtr Duplicate() override; -}; - -class DelStmt final : public AddDelStmt { -public: - explicit DelStmt(ExprPtr e); - - ValPtr Exec(Frame* f, StmtFlowType& flow) override; - - // Optimization-related: - StmtPtr Duplicate() override; -}; - class EventStmt final : public ExprStmt { public: explicit EventStmt(EventExprPtr e); diff --git a/src/StmtEnums.h b/src/StmtEnums.h index db5ab12aa2..04bbfcb189 100644 --- a/src/StmtEnums.h +++ b/src/StmtEnums.h @@ -18,8 +18,6 @@ enum StmtTag { STMT_NEXT, STMT_BREAK, STMT_RETURN, - STMT_ADD, - STMT_DELETE, STMT_LIST, STMT_EVENT_BODY_LIST, STMT_INIT,