Skip to content

Commit f6bac4d

Browse files
makenowjustkddnewton
authored andcommitted
Check void values in singleton class (class <<)
Follow up the ruby/ruby#8917 change.
1 parent 99dfca6 commit f6bac4d

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

src/prism.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14546,7 +14546,7 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power) {
1454614546

1454714547
if (accept1(parser, PM_TOKEN_LESS_LESS)) {
1454814548
pm_token_t operator = parser->previous;
14549-
pm_node_t *expression = parse_expression(parser, PM_BINDING_POWER_NOT, PM_ERR_EXPECT_EXPRESSION_AFTER_LESS_LESS);
14549+
pm_node_t *expression = parse_value_expression(parser, PM_BINDING_POWER_NOT, PM_ERR_EXPECT_EXPRESSION_AFTER_LESS_LESS);
1455014550

1455114551
pm_parser_scope_push(parser, true);
1455214552
accept2(parser, PM_TOKEN_NEWLINE, PM_TOKEN_SEMICOLON);

test/prism/errors_test.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1508,6 +1508,8 @@ def test_void_value_expression_in_statement
15081508
end
15091509
class A < (return)
15101510
end
1511+
class << (return)
1512+
end
15111513
for x in (return)
15121514
end
15131515
RUBY
@@ -1520,6 +1522,7 @@ class A < (return)
15201522
[message, 80..86],
15211523
[message, 110..116],
15221524
[message, 132..138],
1525+
[message, 154..160],
15231526
], compare_ripper: false # Ripper does not check 'void value expression'.
15241527
end
15251528

0 commit comments

Comments
 (0)