diff options
| author | Ginger Bill <bill@gingerbill.org> | 2017-06-29 12:11:50 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2017-06-29 12:11:50 +0100 |
| commit | d167290b280c2dfcb764ff1e8f48df975444962d (patch) | |
| tree | bdf9d5576b36569c2b79de345c4a5ec5b5316c4d /src/parser.cpp | |
| parent | f4879d472360984f2868c406be96a4f3b473bfa4 (diff) | |
Make `AstNodeIdent` a struct wrapping its `Token`
Diffstat (limited to 'src/parser.cpp')
| -rw-r--r-- | src/parser.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index 088269763..bfdd3452d 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -137,7 +137,9 @@ Array<AstNode *> make_ast_node_array(AstFile *f, isize init_capacity = 8) { // for the AstNode. I personally prefer discriminated unions over subtype polymorphism as I can preallocate // all the nodes and even memcpy in a different kind of node #define AST_NODE_KINDS \ - AST_NODE_KIND(Ident, "identifier", Token) \ + AST_NODE_KIND(Ident, "identifier", struct { \ + Token token; \ + }) \ AST_NODE_KIND(Implicit, "implicit", Token) \ AST_NODE_KIND(Undef, "undef", Token) \ AST_NODE_KIND(BasicLit, "basic literal", Token) \ @@ -501,7 +503,7 @@ gb_inline bool is_ast_node_when_stmt(AstNode *node) { Token ast_node_token(AstNode *node) { switch (node->kind) { - case AstNode_Ident: return node->Ident; + case AstNode_Ident: return node->Ident.token; case AstNode_Implicit: return node->Implicit; case AstNode_Undef: return node->Undef; case AstNode_BasicLit: return node->BasicLit; @@ -1042,7 +1044,7 @@ AstNode *ast_deref_expr(AstFile *f, AstNode *expr, Token op) { AstNode *ast_ident(AstFile *f, Token token) { AstNode *result = make_ast_node(f, AstNode_Ident); - result->Ident = token; + result->Ident.token = token; return result; } |