diff options
| author | gingerBill <bill+github@gingerbill.org> | 2017-07-28 11:35:01 +0100 |
|---|---|---|
| committer | gingerBill <bill+github@gingerbill.org> | 2017-07-28 11:35:01 +0100 |
| commit | 28be0ad69b98868c5a77f0fe9d2898391b1ac400 (patch) | |
| tree | 74ca2ff1efd92e544054afe7b6984b0440c147d2 /src/parser.cpp | |
| parent | f0980c0a98aad1ce4712197e98608e0b1a886a44 (diff) | |
Fix IR print bug for empty structs;
Diffstat (limited to 'src/parser.cpp')
| -rw-r--r-- | src/parser.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index b24aea6cf..3612efe64 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -3250,12 +3250,22 @@ AstNode *parse_value_decl(AstFile *f, Array<AstNode *> names, CommentGroup docs) Array<AstNode *> values = {}; Token colon = expect_token_after(f, Token_Colon, "identifier list"); - type = parse_type_attempt(f); + if (f->curr_token.kind == Token_type) { + type = ast_type_type(f, advance_token(f), nullptr); + is_mutable = false; + } else { + type = parse_type_attempt(f); + } if (f->curr_token.kind == Token_Eq || f->curr_token.kind == Token_Colon) { - Token sep = advance_token(f); - is_mutable = sep.kind != Token_Colon; + Token sep = {}; + if (!is_mutable) { + sep = expect_token_after(f, Token_Colon, "type"); + } else { + sep = advance_token(f); + is_mutable = sep.kind != Token_Colon; + } values = parse_rhs_expr_list(f); if (values.count > names.count) { syntax_error(f->curr_token, "Too many values on the right hand side of the declaration"); |