diff options
Diffstat (limited to 'src/ast/expr.cpp')
-rw-r--r-- | src/ast/expr.cpp | 20 |
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 ) |