summaryrefslogtreecommitdiff
path: root/src/hir/expr.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/hir/expr.hpp')
-rw-r--r--src/hir/expr.hpp29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/hir/expr.hpp b/src/hir/expr.hpp
index b2ee623e..8c9d89c2 100644
--- a/src/hir/expr.hpp
+++ b/src/hir/expr.hpp
@@ -465,14 +465,37 @@ struct ExprNode_Literal:
NODE_METHODS();
};
+struct ExprNode_UnitVariant:
+ public ExprNode
+{
+ // Path to variant/struct
+ ::HIR::GenericPath m_path;
+ bool m_is_struct;
+
+ ExprNode_UnitVariant(Span sp, ::HIR::GenericPath path, bool is_struct):
+ ExprNode(mv$(sp)),
+ m_path( mv$(path) ),
+ m_is_struct( is_struct )
+ {}
+
+ NODE_METHODS();
+};
struct ExprNode_PathValue:
public ExprNode
{
+ enum Target {
+ UNKNOWN,
+ FUNCTION,
+ STATIC,
+ CONSTANT,
+ };
::HIR::Path m_path;
+ Target m_target;
- ExprNode_PathValue(Span sp, ::HIR::Path path):
+ ExprNode_PathValue(Span sp, ::HIR::Path path, Target target):
ExprNode(mv$(sp)),
- m_path( mv$(path) )
+ m_path( mv$(path) ),
+ m_target( target )
{}
NODE_METHODS();
@@ -611,6 +634,7 @@ public:
NV(ExprNode_Field);
NV(ExprNode_Literal);
+ NV(ExprNode_UnitVariant);
NV(ExprNode_PathValue);
NV(ExprNode_Variable);
@@ -652,6 +676,7 @@ public:
NV(ExprNode_Field);
NV(ExprNode_Literal);
+ NV(ExprNode_UnitVariant);
NV(ExprNode_PathValue);
NV(ExprNode_Variable);