summaryrefslogtreecommitdiff
path: root/src/hir/expr.hpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-06-03 22:41:32 +0800
committerJohn Hodge <tpg@mutabah.net>2016-06-03 22:41:32 +0800
commit6fad166a1c3b18bda2c9c6c981d72628cd256a00 (patch)
tree22e0f9ff1f01d9f8c3acf31287e88e32bb442439 /src/hir/expr.hpp
parentbc6b5f6ec16e3f50280c8a8725fc7fb1e20c38a2 (diff)
downloadmrust-6fad166a1c3b18bda2c9c6c981d72628cd256a00.tar.gz
HIR - Working on type inference, very incomplete
Diffstat (limited to 'src/hir/expr.hpp')
-rw-r--r--src/hir/expr.hpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/hir/expr.hpp b/src/hir/expr.hpp
index 5d55393c..1f36158c 100644
--- a/src/hir/expr.hpp
+++ b/src/hir/expr.hpp
@@ -19,6 +19,11 @@ public:
const Span& span() const;
virtual void visit(ExprVisitor& v) = 0;
+ ExprNode()
+ {}
+ ExprNode(::HIR::TypeRef ty):
+ m_res_type( mv$(ty) )
+ {}
virtual ~ExprNode();
};
@@ -50,8 +55,10 @@ struct ExprNode_Return:
::HIR::ExprNodeP m_value;
ExprNode_Return(::HIR::ExprNodeP value):
+ ExprNode(::HIR::TypeRef({})),
m_value( mv$(value) )
- {}
+ {
+ }
NODE_METHODS();
};
@@ -62,6 +69,7 @@ struct ExprNode_Loop:
::HIR::ExprNodeP m_code;
ExprNode_Loop(::std::string label, ::HIR::ExprNodeP code):
+ ExprNode(::HIR::TypeRef({})),
m_label( mv$(label) ),
m_code( mv$(code) )
{}
@@ -76,6 +84,7 @@ struct ExprNode_LoopControl:
//::HIR::ExprNodeP m_value;
ExprNode_LoopControl(::std::string label, bool cont):
+ ExprNode(::HIR::TypeRef({})),
m_label( mv$(label) ),
m_continue( cont )
{}
@@ -90,6 +99,7 @@ struct ExprNode_Let:
::HIR::ExprNodeP m_value;
ExprNode_Let(::HIR::Pattern pat, ::HIR::TypeRef ty, ::HIR::ExprNodeP val):
+ ExprNode(::HIR::TypeRef({})),
m_pattern( mv$(pat) ),
m_type( mv$(ty) ),
m_value( mv$(val) )
@@ -151,6 +161,7 @@ struct ExprNode_Assign:
ExprNodeP m_value;
ExprNode_Assign(Op op, ::HIR::ExprNodeP slot, ::HIR::ExprNodeP value):
+ ExprNode(::HIR::TypeRef({})),
m_op(op),
m_slot( mv$(slot) ),
m_value( mv$(value) )