diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-11-23 17:51:37 -0500 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-11-23 17:51:37 -0500 |
| commit | f25182f46dd672eb5b10533c67ed462a3e5df999 (patch) | |
| tree | 142c56629394684cb2d7e15418dbda98ae2fd1a3 /src/parser.cpp | |
| parent | 7597735badd1f6aa6750f354a7e9c85fec705c55 (diff) | |
| download | zig-f25182f46dd672eb5b10533c67ed462a3e5df999.tar.gz zig-f25182f46dd672eb5b10533c67ed462a3e5df999.zip | |
structs can have fields with type `var`
behavior tests passing now
Diffstat (limited to 'src/parser.cpp')
| -rw-r--r-- | src/parser.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index 61f3120d0e..429566ecc1 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -848,7 +848,12 @@ static AstNode *ast_parse_container_field(ParseContext *pc) { AstNode *type_expr = nullptr; if (eat_token_if(pc, TokenIdColon) != nullptr) { - type_expr = ast_expect(pc, ast_parse_type_expr); + Token *var_tok = eat_token_if(pc, TokenIdKeywordVar); + if (var_tok != nullptr) { + type_expr = ast_create_node(pc, NodeTypeVarFieldType, var_tok); + } else { + type_expr = ast_expect(pc, ast_parse_type_expr); + } } AstNode *align_expr = ast_parse_byte_align(pc); AstNode *expr = nullptr; @@ -3163,6 +3168,7 @@ void ast_visit_node_children(AstNode *node, void (*visit)(AstNode **, void *cont visit_field(&node->data.suspend.block, visit, context); break; case NodeTypeEnumLiteral: + case NodeTypeVarFieldType: break; } } |
