diff options
| author | John Hodge <tpg@mutabah.net> | 2016-08-05 11:01:58 +0800 |
|---|---|---|
| committer | John Hodge <tpg@mutabah.net> | 2016-08-05 11:01:58 +0800 |
| commit | ecea2ed5237e57002db68a66b1a88c91788e883b (patch) | |
| tree | 9722b31ceacef046de1b8c47c1591491b10ff27a | |
| parent | 53c53325b7162c3612216ed8fc75cbf5fe28808d (diff) | |
| download | mrust-ecea2ed5237e57002db68a66b1a88c91788e883b.tar.gz | |
HIR Typecheck CS - Fix borrow result type when borrow isn't added by coercion
| -rw-r--r-- | src/hir_typeck/expr_cs.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/hir_typeck/expr_cs.cpp b/src/hir_typeck/expr_cs.cpp index 6da7578e..dc790c2d 100644 --- a/src/hir_typeck/expr_cs.cpp +++ b/src/hir_typeck/expr_cs.cpp @@ -2767,6 +2767,10 @@ namespace { node_ptr = ::HIR::ExprNodeP(new ::HIR::ExprNode_UniOp( mv$(span), op, mv$(node_ptr) )); node_ptr->m_res_type = ::HIR::TypeRef::new_borrow(borrow_type, des_borrow_inner.clone()); } + else { + auto borrow_type = context.m_ivars.get_type(node_ptr->m_res_type).m_data.as_Borrow().type; + node_ptr->m_res_type = ::HIR::TypeRef::new_borrow(borrow_type, des_borrow_inner.clone()); + } cb(*node_ptr_ptr); @@ -2947,7 +2951,7 @@ namespace { add_coerce_borrow(context, node_ptr, ty_dst, [&](auto& node_ptr) { auto span = node_ptr->span(); node_ptr = ::HIR::ExprNodeP(new ::HIR::ExprNode_Unsize( mv$(span), mv$(node_ptr), ty_dst.clone() )); - DEBUG("- Deref " << &*node_ptr << " -> " << ty_dst); + DEBUG("- Unsize " << &*node_ptr << " -> " << ty_dst); node_ptr->m_res_type = ty_dst.clone(); }); return true; |
