diff options
author | John Hodge <tpg@mutabah.net> | 2016-09-18 09:52:28 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-09-18 09:52:28 +0800 |
commit | 95ea85ee5bf1403e3badcb9d890cf848c845ace0 (patch) | |
tree | 381e198ba0067bc993054e985326929293de6282 /src/hir/from_ast_expr.cpp | |
parent | b049dd7d36b991bb95f273d862f95f0865c929c2 (diff) | |
download | mrust-95ea85ee5bf1403e3badcb9d890cf848c845ace0.tar.gz |
HIR - Rework to include a node for in/box (for better type inferrence)
Diffstat (limited to 'src/hir/from_ast_expr.cpp')
-rw-r--r-- | src/hir/from_ast_expr.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/hir/from_ast_expr.cpp b/src/hir/from_ast_expr.cpp index 3a2cd652..01f35cf4 100644 --- a/src/hir/from_ast_expr.cpp +++ b/src/hir/from_ast_expr.cpp @@ -188,9 +188,16 @@ struct LowerHIR_ExprNode_Visitor: ::HIR::ExprNode_UniOp::Op op; switch(v.m_type) { - case ::AST::ExprNode_UniOp::BOX: - BUG(v.get_pos(), "Encounterd box operator (should have been expanded in AST)"); - break; + case ::AST::ExprNode_UniOp::BOX: { + // TODO: Emit a call to `<_ as "core"::default::Default>::default()` in place of the nullptr + auto path_Default = ::HIR::GenericPath( ::HIR::SimplePath(g_core_crate, {"default", "Default"}) ); + m_rv.reset(new ::HIR::ExprNode_Emplace(v.span(), + ::HIR::ExprNode_Emplace::Type::Boxer, + //::HIR::ExprNodeP(new ::HIR::ExprNode_CallPath(v.span(), ::HIR::Path(::HIR::TypeRef(), mv$(path_Default), "default"), {} )), + ::HIR::ExprNodeP(new ::HIR::ExprNode_Tuple(v.span(), {})), + LowerHIR_ExprNode_Inner(*v.m_value) + )); + } break; case ::AST::ExprNode_UniOp::QMARK: BUG(v.get_pos(), "Encounterd question mark operator (should have been expanded in AST)"); break; |