diff options
author | John Hodge <tpg@mutabah.net> | 2016-06-03 22:41:32 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-06-03 22:41:32 +0800 |
commit | 6fad166a1c3b18bda2c9c6c981d72628cd256a00 (patch) | |
tree | 22e0f9ff1f01d9f8c3acf31287e88e32bb442439 /src/hir/expr.hpp | |
parent | bc6b5f6ec16e3f50280c8a8725fc7fb1e20c38a2 (diff) | |
download | mrust-6fad166a1c3b18bda2c9c6c981d72628cd256a00.tar.gz |
HIR - Working on type inference, very incomplete
Diffstat (limited to 'src/hir/expr.hpp')
-rw-r--r-- | src/hir/expr.hpp | 13 |
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) ) |