summaryrefslogtreecommitdiff
path: root/src/ast/expr.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast/expr.hpp')
-rw-r--r--src/ast/expr.hpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/ast/expr.hpp b/src/ast/expr.hpp
index e7f6750d..0d503b81 100644
--- a/src/ast/expr.hpp
+++ b/src/ast/expr.hpp
@@ -44,6 +44,7 @@ public:
friend ::std::ostream& operator<<(::std::ostream& os, const ExprNode& node);
static ::std::unique_ptr<ExprNode> from_deserialiser(Deserialiser& d);
};
+typedef ::std::unique_ptr<AST::ExprNode> ExprNodeP;
#define NODE_METHODS() \
void visit(NodeVisitor& nv) override;\
@@ -54,21 +55,24 @@ struct ExprNode_Block:
public ExprNode
{
bool m_is_unsafe;
+ bool m_yields_final_value;
::std::unique_ptr<AST::Module> m_local_mod;
- ::std::vector< ::std::unique_ptr<ExprNode> > m_nodes;
+ ::std::vector<ExprNodeP> m_nodes;
- ExprNode_Block():
- m_is_unsafe(false)
- {}
- ExprNode_Block(::std::vector< ::std::unique_ptr<ExprNode> >&& nodes, ::std::unique_ptr<AST::Module> local_mod):
+ ExprNode_Block(::std::vector<ExprNodeP> nodes={}):
m_is_unsafe(false),
+ m_yields_final_value(true),
+ m_local_mod(),
+ m_nodes( mv$(nodes) )
+ {}
+ ExprNode_Block(bool is_unsafe, bool yields_final_value, ::std::vector<ExprNodeP> nodes, ::std::unique_ptr<AST::Module> local_mod):
+ m_is_unsafe(is_unsafe),
+ m_yields_final_value(yields_final_value),
m_local_mod( move(local_mod) ),
m_nodes( move(nodes) )
{
}
- void set_unsafe() { m_is_unsafe = true; }
-
NODE_METHODS();
};
@@ -708,7 +712,6 @@ public:
friend ::std::ostream& operator<<(::std::ostream& os, const Expr& pat);
};
-typedef ::std::unique_ptr<AST::ExprNode> ExprNodeP;
}
#endif