summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Newton <kddnewton@gmail.com>2024-01-08 09:21:12 -0500
committergit <svn-admin@ruby-lang.org>2024-01-08 14:34:59 +0000
commitd1d50a050583da978fcf87b41ddc807bf93ede9e (patch)
tree6c86edfdd85c2ad83e0ef553aee3976cb54df323
parentb3d612804946e841e47d14e09b6839224a79c1a4 (diff)
[ruby/prism] Handle parsing a line break in a receiver of a method
https://github.com/ruby/prism/commit/4d5f43ecbc
-rw-r--r--prism/prism.c1
-rw-r--r--test/prism/errors_test.rb8
2 files changed, 5 insertions, 4 deletions
diff --git a/prism/prism.c b/prism/prism.c
index 5cefb1a86a..398288e641 100644
--- a/prism/prism.c
+++ b/prism/prism.c
@@ -15003,6 +15003,7 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power, b
pm_token_t lparen = parser->previous;
pm_node_t *expression = parse_value_expression(parser, PM_BINDING_POWER_STATEMENT, true, PM_ERR_DEF_RECEIVER);
+ accept1(parser, PM_TOKEN_NEWLINE);
expect1(parser, PM_TOKEN_PARENTHESIS_RIGHT, PM_ERR_EXPECT_RPAREN);
pm_token_t rparen = parser->previous;
diff --git a/test/prism/errors_test.rb b/test/prism/errors_test.rb
index 7ce6d17be5..2c981fbd42 100644
--- a/test/prism/errors_test.rb
+++ b/test/prism/errors_test.rb
@@ -335,10 +335,10 @@ module Prism
def test_def_with_multiple_statements_receiver
assert_errors expression("def (\na\nb\n).c; end"), "def (\na\nb\n).c; end", [
- ["expected a matching `)`", 7..7],
- ["expected a `.` or `::` after the receiver in a method definition", 7..7],
- ["expected a method name", 7..7],
- ["cannot parse the expression", 10..10],
+ ["expected a matching `)`", 8..8],
+ ["expected a `.` or `::` after the receiver in a method definition", 8..8],
+ ["expected a delimiter to close the parameters", 9..9],
+ ["cannot parse the expression", 9..9],
["cannot parse the expression", 11..11]
]
end