diff options
| author | gingerBill <bill@gingerbill.org> | 2022-06-13 11:11:51 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2022-06-13 11:11:51 +0100 |
| commit | b40998de9e74588a498fecaa4a2ac903da411f7e (patch) | |
| tree | 40461b30cc080c3800a60e95ede722cf18fce1b1 | |
| parent | 8c0c327df95208634e87df10c2f33b3c870637e4 (diff) | |
Improve `-strict-style` for `foreign import`
| -rw-r--r-- | src/parser.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index 22c76d746..a6f30cdfd 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -2112,6 +2112,7 @@ Ast *parse_operand(AstFile *f, bool lhs) { case Token_OpenParen: { bool allow_newline; + isize prev_expr_level; Token open, close; // NOTE(bill): Skip the Paren Expression open = expect_token(f, Token_OpenParen); @@ -2121,16 +2122,18 @@ Ast *parse_operand(AstFile *f, bool lhs) { return ast_bad_expr(f, open, close); } + prev_expr_level = f->expr_level; allow_newline = f->allow_newline; if (f->expr_level < 0) { f->allow_newline = false; } - f->expr_level++; + // NOTE(bill): enforce it to >0 + f->expr_level = gb_max(f->expr_level, 0)+1; operand = parse_expr(f, false); - f->expr_level--; f->allow_newline = allow_newline; + f->expr_level = prev_expr_level; close = expect_token(f, Token_CloseParen); return ast_paren_expr(f, operand, open, close); @@ -4010,7 +4013,7 @@ Ast *parse_body(AstFile *f) { // NOTE(bill): The body may be within an expression so reset to zero f->expr_level = 0; - f->allow_newline = false; + // f->allow_newline = false; open = expect_token(f, Token_OpenBrace); stmts = parse_stmt_list(f); close = expect_token(f, Token_CloseBrace); @@ -4468,7 +4471,7 @@ Ast *parse_foreign_decl(AstFile *f) { break; } } - expect_token(f, Token_CloseBrace); + expect_closing_brace_of_field_list(f); } else { filepaths = array_make<Token>(heap_allocator(), 0, 1); Token path = expect_token(f, Token_String); |