diff options
| author | gingerBill <bill@gingerbill.org> | 2024-03-23 16:51:04 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2024-03-23 16:51:04 +0000 |
| commit | 1d46adb598328b4977d5b4cfad2a1dc679b05a21 (patch) | |
| tree | c74cbdb96967efbb05b58e6f4a059f7d5123bb8f /src/parser.cpp | |
| parent | 61aa4558dc864019192072ff9a7f1f1ee23096bf (diff) | |
Treat `*x` as an unary operator to improve error messages for common C-programmer mistakes
Diffstat (limited to 'src/parser.cpp')
| -rw-r--r-- | src/parser.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index b6b62461f..bb9a526fe 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -2541,6 +2541,9 @@ gb_internal Ast *parse_operand(AstFile *f, bool lhs) { return ast_pointer_type(f, token, elem); } break; + case Token_Mul: + return parse_unary_expr(f, true); + case Token_OpenBracket: { Token token = expect_token(f, Token_OpenBracket); Ast *count_expr = nullptr; @@ -3274,7 +3277,9 @@ gb_internal Ast *parse_unary_expr(AstFile *f, bool lhs) { case Token_Sub: case Token_Xor: case Token_And: - case Token_Not: { + case Token_Not: + case Token_Mul: // Used for error handling when people do C-like things + { Token token = advance_token(f); Ast *expr = parse_unary_expr(f, lhs); return ast_unary_expr(f, token, expr); |