diff options
| author | Ginger Bill <bill@gingerbill.org> | 2017-07-19 22:17:57 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2017-07-19 22:17:57 +0100 |
| commit | d233706a2d3c5f1d68622eada8e62823c7d992b1 (patch) | |
| tree | 7795a7020051b64937f0d7d9ce94b6f6be9ffa57 /src/parser.cpp | |
| parent | f1ab17ed4ef68a7591f8aa786e3c02d33d038f05 (diff) | |
Fix minor parsing bug with procedure return types
Diffstat (limited to 'src/parser.cpp')
| -rw-r--r-- | src/parser.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index 4b8c597db..0fbe160cb 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -3391,6 +3391,10 @@ AstNode *parse_results(AstFile *f) { return nullptr; } + isize prev_level = f->expr_level; + defer (f->expr_level = prev_level); + // f->expr_level = -1; + if (f->curr_token.kind != Token_OpenParen) { CommentGroup empty_group = {}; Token begin_token = f->curr_token; @@ -3790,10 +3794,13 @@ AstNode *parse_field_list(AstFile *f, isize *name_count_, u32 allowed_flags, Tok AstNode *parse_type_or_ident(AstFile *f) { #if 1 bool prev_allow_type = f->allow_type; + isize prev_expr_level = f->expr_level; + defer (f->allow_type = prev_allow_type); + defer (f->expr_level = prev_expr_level); f->allow_type = true; + f->expr_level = -1; AstNode *operand = parse_operand(f, true); AstNode *type = parse_atom_expr(f, operand, true); - f->allow_type = prev_allow_type; return type; #else switch (f->curr_token.kind) { |