summaryrefslogtreecommitdiff
path: root/src/hir/expr_ptr.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2019-11-02 11:07:23 +0800
committerJohn Hodge <tpg@ucc.asn.au>2019-11-02 11:07:23 +0800
commit1d02810c3cf908bfba7c15ae50eb5314603b9d85 (patch)
tree79dd5e4ef4c3ff79db0912ba546f08e61a7a8c10 /src/hir/expr_ptr.cpp
parent7111acba04d72fe4084b1a1f3209ff83efe8614d (diff)
parent8b53b38f40625ab0510f541d69db3f83332a830a (diff)
downloadmrust-1d02810c3cf908bfba7c15ae50eb5314603b9d85.tar.gz
Merge branch 'nightly-1.29' - #95 Working support for rustc 1.29
Diffstat (limited to 'src/hir/expr_ptr.cpp')
-rw-r--r--src/hir/expr_ptr.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/hir/expr_ptr.cpp b/src/hir/expr_ptr.cpp
index fcef34bd..7f493a0d 100644
--- a/src/hir/expr_ptr.cpp
+++ b/src/hir/expr_ptr.cpp
@@ -45,6 +45,13 @@
}
+const Span& HIR::ExprPtr::span() const
+{
+ static Span static_sp;
+ if( *this )
+ return (*this)->span();
+ return static_sp;
+}
const ::MIR::Function* HIR::ExprPtr::get_mir_opt() const
{
if(!this->m_mir)
@@ -83,6 +90,15 @@ void HIR::ExprPtr::set_mir(::MIR::FunctionPointer mir)
{
assert( !this->m_mir );
m_mir = ::std::move(mir);
+ // Reset the HIR tree to be a placeholder node (thus freeing the backing memory)
+ if( false && node )
+ {
+ auto sp = node->span();
+ node = ExprPtrInner(::std::unique_ptr<HIR::ExprNode>(new ::HIR::ExprNode_Loop(
+ sp, "",
+ ::std::unique_ptr<HIR::ExprNode>(new ::HIR::ExprNode_Tuple(sp, {}))
+ )));
+ }
}