summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorydah <t.yudai92@gmail.com>2025-07-07 19:06:26 +0900
committerKevin Newton <kddnewton@gmail.com>2025-08-05 13:58:09 -0400
commit087190fcd21973eb34b600fa82e6567189f4bbd7 (patch)
treed597df686f275e815608064add06bef8236acd8a
parentf814a777550ee39865f8fe26d0061cba8b715509 (diff)
[ruby/prism] Improve error handling for missing parentheses after 'not' in command calls
https://github.com/ruby/prism/commit/d9151b8a82
-rw-r--r--prism/templates/src/diagnostic.c.erb3
-rw-r--r--test/prism/errors/command_calls_31.txt7
2 files changed, 8 insertions, 2 deletions
diff --git a/prism/templates/src/diagnostic.c.erb b/prism/templates/src/diagnostic.c.erb
index 389b1dc484..9a30a57e3b 100644
--- a/prism/templates/src/diagnostic.c.erb
+++ b/prism/templates/src/diagnostic.c.erb
@@ -184,7 +184,8 @@ static const pm_diagnostic_data_t diagnostic_messages[PM_DIAGNOSTIC_ID_MAX] = {
[PM_ERR_EXPECT_FOR_DELIMITER] = { "unexpected %s; expected a 'do', newline, or ';' after the 'for' loop collection", PM_ERROR_LEVEL_SYNTAX },
[PM_ERR_EXPECT_IDENT_REQ_PARAMETER] = { "expected an identifier for the required parameter", PM_ERROR_LEVEL_SYNTAX },
[PM_ERR_EXPECT_IN_DELIMITER] = { "expected a delimiter after the patterns of an `in` clause", PM_ERROR_LEVEL_SYNTAX },
- [PM_ERR_EXPECT_LPAREN_AFTER_NOT] = { "expected a `(` after `not`", PM_ERROR_LEVEL_SYNTAX },
+ [PM_ERR_EXPECT_LPAREN_AFTER_NOT_LPAREN] = { "expected a `(` immediately after `not`", PM_ERROR_LEVEL_SYNTAX },
+ [PM_ERR_EXPECT_LPAREN_AFTER_NOT_OTHER] = { "expected a `(` after `not`", PM_ERROR_LEVEL_SYNTAX },
[PM_ERR_EXPECT_LPAREN_REQ_PARAMETER] = { "expected a `(` to start a required parameter", PM_ERROR_LEVEL_SYNTAX },
[PM_ERR_EXPECT_MESSAGE] = { "unexpected %s; expecting a message to send to the receiver", PM_ERROR_LEVEL_SYNTAX },
[PM_ERR_EXPECT_RBRACKET] = { "expected a matching `]`", PM_ERROR_LEVEL_SYNTAX },
diff --git a/test/prism/errors/command_calls_31.txt b/test/prism/errors/command_calls_31.txt
index 72d5fc588f..e662b25444 100644
--- a/test/prism/errors/command_calls_31.txt
+++ b/test/prism/errors/command_calls_31.txt
@@ -7,6 +7,11 @@ true || not true
^~~~ unexpected 'true', expecting end-of-input
true && not (true)
- ^ expected a `(` after `not`
+ ^ expected a `(` immediately after `not`
^ unexpected '(', expecting end-of-input
+true && not
+true
+^~~~ expected a `(` after `not`
+^~~~ unexpected 'true', expecting end-of-input
+