summaryrefslogtreecommitdiff
path: root/src/ast/expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast/expr.cpp')
-rw-r--r--src/ast/expr.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/ast/expr.cpp b/src/ast/expr.cpp
index 59fe2162..7e0437db 100644
--- a/src/ast/expr.cpp
+++ b/src/ast/expr.cpp
@@ -69,6 +69,7 @@ SERIALISE_TYPE(Expr::, "Expr", {
else _(ExprNode_Integer)
else _(ExprNode_Closure)
else _(ExprNode_StructLiteral)
+ else _(ExprNode_Array)
else _(ExprNode_Tuple)
else _(ExprNode_NamedValue)
else _(ExprNode_Field)
@@ -334,6 +335,19 @@ NODE(ExprNode_StructLiteral, {
os << "/* todo: sl */";
})
+NODE(ExprNode_Array, {
+ s.item(m_size);
+ s.item(m_values);
+},{
+ os << "[";
+ if( m_size.get() )
+ os << *m_values[0] << "; " << *m_size;
+ else
+ for(const auto& a : m_values)
+ os << *a << ",";
+ os << "]";
+})
+
NODE(ExprNode_Tuple, {
s.item(m_values);
},{
@@ -612,6 +626,12 @@ NV(ExprNode_StructLiteral,
for( auto& val : node.m_values )
visit(val.second);
})
+NV(ExprNode_Array,
+{
+ visit(node.m_size);
+ for( auto& val : node.m_values )
+ visit(val);
+})
NV(ExprNode_Tuple,
{
for( auto& val : node.m_values )