diff options
author | John Hodge <tpg@mutabah.net> | 2016-08-14 22:09:22 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-08-14 22:09:22 +0800 |
commit | 4dfe5c315498ef816baa3c62e36bc0d72cff50a9 (patch) | |
tree | aae657d43c099d1709f24931f6185c9a59b73be2 /src/hir/from_ast_expr.cpp | |
parent | 6f390a1f245d467ef8f2aa7c9e0ad7b300a4e681 (diff) | |
download | mrust-4dfe5c315498ef816baa3c62e36bc0d72cff50a9.tar.gz |
HIR - Move borrow ops to their own node type
Diffstat (limited to 'src/hir/from_ast_expr.cpp')
-rw-r--r-- | src/hir/from_ast_expr.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/hir/from_ast_expr.cpp b/src/hir/from_ast_expr.cpp index 66617075..f8d3fd69 100644 --- a/src/hir/from_ast_expr.cpp +++ b/src/hir/from_ast_expr.cpp @@ -194,8 +194,13 @@ struct LowerHIR_ExprNode_Visitor: BUG(v.get_pos(), "Encounterd question mark operator (should have been expanded in AST)"); break; - case ::AST::ExprNode_UniOp::REF: op = ::HIR::ExprNode_UniOp::Op::Ref ; if(0) - case ::AST::ExprNode_UniOp::REFMUT: op = ::HIR::ExprNode_UniOp::Op::RefMut; if(0) + case ::AST::ExprNode_UniOp::REF: + m_rv.reset(new ::HIR::ExprNode_Borrow(v.span(), ::HIR::BorrowType::Shared, LowerHIR_ExprNode_Inner( *v.m_value ) )); + break; + case ::AST::ExprNode_UniOp::REFMUT: + m_rv.reset(new ::HIR::ExprNode_Borrow(v.span(), ::HIR::BorrowType::Unique, LowerHIR_ExprNode_Inner( *v.m_value ) )); + break; + case ::AST::ExprNode_UniOp::INVERT: op = ::HIR::ExprNode_UniOp::Op::Invert; if(0) case ::AST::ExprNode_UniOp::NEGATE: op = ::HIR::ExprNode_UniOp::Op::Negate; m_rv.reset( new ::HIR::ExprNode_UniOp( v.span(), |