Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Stmt.hpp

    r37cdd97 rc570806  
    2727
    2828// Must be included in *all* AST classes; should be #undef'd at the end of the file
    29 #define MUTATE_FRIEND template<typename node_t> friend node_t * mutate(const node_t * node);
     29#define MUTATE_FRIEND \
     30    template<typename node_t> friend node_t * mutate(const node_t * node); \
     31        template<typename node_t> friend node_t * shallowCopy(const node_t * node);
    3032
    3133namespace ast {
     
    342344};
    343345
    344 /// Suspend statement
    345 class SuspendStmt final : public Stmt {
    346 public:
    347         ptr<CompoundStmt> then;
    348         enum Type { None, Coroutine, Generator } type = None;
    349 
    350         SuspendStmt( const CodeLocation & loc, const CompoundStmt * then, Type type, std::vector<Label> && labels = {} )
    351         : Stmt(loc, std::move(labels)), then(then), type(type) {}
    352 
    353         const Stmt * accept( Visitor & v ) const override { return v.visit( this ); }
    354 private:
    355         SuspendStmt * clone() const override { return new SuspendStmt{ *this }; }
    356         MUTATE_FRIEND
    357 };
    358 
    359346/// Wait for concurrency statement `when (...) waitfor (... , ...) ... timeout(...) ... else ...`
    360347class WaitForStmt final : public Stmt {
     
    412399class ImplicitCtorDtorStmt final : public Stmt {
    413400public:
    414         readonly<Stmt> callStmt;
     401        ptr<Stmt> callStmt;
    415402
    416403        ImplicitCtorDtorStmt( const CodeLocation & loc, const Stmt * callStmt,
Note: See TracChangeset for help on using the changeset viewer.