From 6d29b4448479ac1f6299e9c4e73625e74cdb4581 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 18 Mar 2017 13:36:19 +0800 Subject: AST - Fixed printing of interpolated fragments --- src/ast/expr.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/ast/expr.cpp') diff --git a/src/ast/expr.cpp b/src/ast/expr.cpp index 65048183..c35700e7 100644 --- a/src/ast/expr.cpp +++ b/src/ast/expr.cpp @@ -266,7 +266,16 @@ NODE(ExprNode_ByteString, { }) NODE(ExprNode_Closure, { - os << "/* todo: closure */"; + if( m_is_move ) + os << "move "; + os << "|"; + for(const auto& a : m_args) + { + os << a.first << ": " << a.second << ","; + } + os << "|"; + os << "->" << m_return; + os << " " << *m_code; },{ ExprNode_Closure::args_t args; for(const auto& a : m_args) { @@ -276,7 +285,16 @@ NODE(ExprNode_Closure, { }); NODE(ExprNode_StructLiteral, { - os << "/* todo: sl */"; + os << m_path << " { "; + for(const auto& v : m_values) + { + os << v.first << ": " << *v.second << ", "; + } + if(m_base_value) + { + os << ".." << *m_base_value; + } + os << "}"; },{ ExprNode_StructLiteral::t_values vals; -- cgit v1.2.3 From 8a12037b9f8c3a18c860e6f392ba9cebb3ed5aa6 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Fri, 14 Apr 2017 12:40:53 +0800 Subject: AST Expr - Clone module pointer when cloning a block with a module --- src/ast/expr.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/ast/expr.cpp') diff --git a/src/ast/expr.cpp b/src/ast/expr.cpp index c35700e7..dd586683 100644 --- a/src/ast/expr.cpp +++ b/src/ast/expr.cpp @@ -85,9 +85,7 @@ NODE(ExprNode_Block, { ::std::vector nodes; for(const auto& n : m_nodes) nodes.push_back( n->clone() ); - if( m_local_mod ) - TODO(get_pos(), "Handle cloning ExprNode_Block with a module"); - return NEWNODE(ExprNode_Block, m_is_unsafe, m_yields_final_value, mv$(nodes), nullptr); + return NEWNODE(ExprNode_Block, m_is_unsafe, m_yields_final_value, mv$(nodes), m_local_mod); }) NODE(ExprNode_Macro, { -- cgit v1.2.3