Skip to content

Commit 5da77ea

Browse files
committed
Improve error handling for missing parentheses after 'not' in command calls
1 parent 229818c commit 5da77ea

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

src/prism.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19757,7 +19757,14 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power, b
1975719757
pm_node_t *receiver = NULL;
1975819758

1975919759
if (!accepts_command_call && !match1(parser, PM_TOKEN_PARENTHESIS_LEFT)) {
19760-
pm_parser_err_current(parser, PM_ERR_EXPECT_LPAREN_AFTER_NOT);
19760+
if (parser->current.type == PM_TOKEN_PARENTHESIS_LEFT_PARENTHESES) {
19761+
pm_parser_err(parser, parser->previous.end, parser->previous.end + 1, PM_ERR_EXPECT_LPAREN_AFTER_NOT);
19762+
} else if (parser->current.type == PM_TOKEN_NEWLINE) {
19763+
parser_lex(parser);
19764+
pm_parser_err_current(parser, PM_ERR_EXPECT_LPAREN_AFTER_NOT);
19765+
} else {
19766+
pm_parser_err_current(parser, PM_ERR_EXPECT_LPAREN_AFTER_NOT);
19767+
}
1976119768
return (pm_node_t *) pm_missing_node_create(parser, parser->current.start, parser->current.end);
1976219769
}
1976319770

test/prism/errors/command_calls_31.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ true || not true
77
^~~~ unexpected 'true', expecting end-of-input
88

99
true && not (true)
10-
^ expected a `(` after `not`
10+
^ expected a `(` after `not`
1111
^ unexpected '(', expecting end-of-input
1212

13+
true && not
14+
true
15+
^~~~ expected a `(` after `not`
16+
^~~~ unexpected 'true', expecting end-of-input
17+

0 commit comments

Comments
 (0)