Changes in src/AST/Stmt.hpp [37cdd97:c570806]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Stmt.hpp
r37cdd97 rc570806 27 27 28 28 // 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); 30 32 31 33 namespace ast { … … 342 344 }; 343 345 344 /// Suspend statement345 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_FRIEND357 };358 359 346 /// Wait for concurrency statement `when (...) waitfor (... , ...) ... timeout(...) ... else ...` 360 347 class WaitForStmt final : public Stmt { … … 412 399 class ImplicitCtorDtorStmt final : public Stmt { 413 400 public: 414 readonly<Stmt> callStmt;401 ptr<Stmt> callStmt; 415 402 416 403 ImplicitCtorDtorStmt( const CodeLocation & loc, const Stmt * callStmt,
Note:
See TracChangeset
for help on using the changeset viewer.