summaryrefslogtreecommitdiff
path: root/src/hir/expr.hpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-05-23 22:16:29 +0800
committerJohn Hodge <tpg@mutabah.net>2016-05-23 22:16:29 +0800
commitb96c1a08cec9be6cc29f47eb151c3ad91075a819 (patch)
treefaf4259c8d8e59c7433a0dfca7313d0c7c686f5b /src/hir/expr.hpp
parent1f9a4180a3b54f85f37919ba4ca709f8e8250bb6 (diff)
downloadmrust-b96c1a08cec9be6cc29f47eb151c3ad91075a819.tar.gz
HIR - Add type alias replacement. Other related changes below
- Added pretty printing for HIR paths and types - Added a sub-pass to resolve/index that makes all index paths point at the actual item (no imports involved) - Split up some contents of main_bindings.hpp
Diffstat (limited to 'src/hir/expr.hpp')
-rw-r--r--src/hir/expr.hpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/hir/expr.hpp b/src/hir/expr.hpp
index 6b9482fb..910dac8b 100644
--- a/src/hir/expr.hpp
+++ b/src/hir/expr.hpp
@@ -13,6 +13,8 @@ class ExprVisitor;
class ExprNode
{
public:
+ //::HIR::TypeRef m_res_type;
+
virtual void visit(ExprVisitor& v) = 0;
virtual ~ExprNode();
};
@@ -461,6 +463,46 @@ public:
NV(ExprNode_ArraySized);
NV(ExprNode_Closure);
+ #undef NV
+};
+
+class ExprVisitorDef:
+ public ExprVisitor
+{
+public:
+ #define NV(nt) virtual void visit(nt& n);
+
+ NV(ExprNode_Block)
+ NV(ExprNode_Return)
+ NV(ExprNode_Let)
+ NV(ExprNode_Loop)
+ NV(ExprNode_LoopControl)
+ NV(ExprNode_Match)
+ NV(ExprNode_If)
+
+ NV(ExprNode_Assign)
+ NV(ExprNode_BinOp)
+ NV(ExprNode_UniOp)
+ NV(ExprNode_Cast)
+ NV(ExprNode_Index)
+ NV(ExprNode_Deref)
+
+ NV(ExprNode_CallPath);
+ NV(ExprNode_CallValue);
+ NV(ExprNode_CallMethod);
+ NV(ExprNode_Field);
+
+ NV(ExprNode_Literal);
+ NV(ExprNode_PathValue);
+ NV(ExprNode_Variable);
+
+ NV(ExprNode_StructLiteral);
+ NV(ExprNode_Tuple);
+ NV(ExprNode_ArrayList);
+ NV(ExprNode_ArraySized);
+
+ NV(ExprNode_Closure);
+ #undef NV
};
}