diff options
author | John Hodge <tpg@ucc.asn.au> | 2019-03-17 15:53:22 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2019-03-17 15:53:22 +0800 |
commit | 1008d1cb81a86c6a2d2467032815eefe150b2e6c (patch) | |
tree | 4c00b6deb4538cc2643facae47dce447fdfcdbc0 /src/expand/mod.cpp | |
parent | 413fcf4f318e1530dcbdd8abb879bf77b714a91c (diff) | |
download | mrust-1008d1cb81a86c6a2d2467032815eefe150b2e6c.tar.gz |
Expand - Return part of catch blocks
Diffstat (limited to 'src/expand/mod.cpp')
-rw-r--r-- | src/expand/mod.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/expand/mod.cpp b/src/expand/mod.cpp index fd188345..fd851c89 100644 --- a/src/expand/mod.cpp +++ b/src/expand/mod.cpp @@ -564,7 +564,10 @@ struct CExpandExpr: auto loop_name = mv$(m_try_stack.back()); m_try_stack.pop_back(); - auto break_node = AST::ExprNodeP(new AST::ExprNode_Flow(AST::ExprNode_Flow::BREAK, loop_name, mv$(node.m_inner))); + auto core_crate = (crate.m_load_std == ::AST::Crate::LOAD_NONE ? "" : "core"); + auto path_Ok = ::AST::Path(core_crate, {::AST::PathNode("result"), ::AST::PathNode("Result"), ::AST::PathNode("Ok")}); + auto ok_node = ::AST::ExprNodeP(new ::AST::ExprNode_CallPath( mv$(path_Ok), ::make_vec1(mv$(node.m_inner)) )); + auto break_node = AST::ExprNodeP(new AST::ExprNode_Flow(AST::ExprNode_Flow::BREAK, loop_name, mv$(ok_node))); this->replacement = AST::ExprNodeP(new AST::ExprNode_Loop(loop_name, mv$(break_node))); } void visit(::AST::ExprNode_Asm& node) override { |