summaryrefslogtreecommitdiff
path: root/src/ast/expr.cpp
diff options
context:
space:
mode:
authorJohn Hodge (bugs) <tpg@mutabah.net>2017-05-14 12:01:45 +0800
committerJohn Hodge (bugs) <tpg@mutabah.net>2017-05-14 12:01:45 +0800
commit1d2fe7681219700998c8ecbdb8ed5acab66578df (patch)
tree0d38e8ab5fd80c890d3dec67a0596abfc7a4f0cd /src/ast/expr.cpp
parentc6fca061dd134068c831aefd88d9535a30f423ed (diff)
parentfde22b3f03d802231985b8ded567cba16cb5aa00 (diff)
downloadmrust-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.cpp26
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;