diff options
author | John Hodge (bugs) <tpg@mutabah.net> | 2017-05-14 12:01:45 +0800 |
---|---|---|
committer | John Hodge (bugs) <tpg@mutabah.net> | 2017-05-14 12:01:45 +0800 |
commit | 1d2fe7681219700998c8ecbdb8ed5acab66578df (patch) | |
tree | 0d38e8ab5fd80c890d3dec67a0596abfc7a4f0cd /src/ast/expr.cpp | |
parent | c6fca061dd134068c831aefd88d9535a30f423ed (diff) | |
parent | fde22b3f03d802231985b8ded567cba16cb5aa00 (diff) | |
download | mrust-1d2fe7681219700998c8ecbdb8ed5acab66578df.tar.gz |
Merge branch 'master' of https://github.com/thepowersgang/mrustc
# Conflicts:
# src/common.hpp
# src/hir/deserialise.cpp
# src/hir_typeck/static.cpp
# src/mir/from_hir.cpp
# src/mir/from_hir.hpp
# src/mir/from_hir_match.cpp
# src/mir/helpers.hpp
# src/mir/mir_builder.cpp
Diffstat (limited to 'src/ast/expr.cpp')
-rw-r--r-- | src/ast/expr.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/ast/expr.cpp b/src/ast/expr.cpp index 65048183..dd586683 100644 --- a/src/ast/expr.cpp +++ b/src/ast/expr.cpp @@ -85,9 +85,7 @@ NODE(ExprNode_Block, { ::std::vector<ExprNodeP> 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, { @@ -266,7 +264,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 +283,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; |