diff options
author | John Hodge <tpg@mutabah.net> | 2016-05-23 22:16:29 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-05-23 22:16:29 +0800 |
commit | b96c1a08cec9be6cc29f47eb151c3ad91075a819 (patch) | |
tree | faf4259c8d8e59c7433a0dfca7313d0c7c686f5b /src/hir/expr.hpp | |
parent | 1f9a4180a3b54f85f37919ba4ca709f8e8250bb6 (diff) | |
download | mrust-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.hpp | 42 |
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 }; } |