From 28be0ad69b98868c5a77f0fe9d2898391b1ac400 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 28 Jul 2017 11:35:01 +0100 Subject: Fix IR print bug for empty structs; --- src/parser.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/parser.cpp') 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 names, CommentGroup docs) Array 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"); -- cgit v1.2.3