From 6968b289e756d0df8eec1c1f7d6e5d0596dfda21 Mon Sep 17 00:00:00 2001 From: TSUYUSATO Kitsune Date: Thu, 23 Nov 2023 00:13:20 +0900 Subject: [PATCH] [ruby/prism] Check void values in singleton class (`class <<`) Follow up the ruby/ruby#8917 change. https://github.com/ruby/prism/commit/f6bac4d3bf --- prism/prism.c | 2 +- test/prism/errors_test.rb | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/prism/prism.c b/prism/prism.c index 744b25c816..95bfc5a8db 100644 --- a/prism/prism.c +++ b/prism/prism.c @@ -14546,7 +14546,7 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power) { if (accept1(parser, PM_TOKEN_LESS_LESS)) { pm_token_t operator = parser->previous; - pm_node_t *expression = parse_expression(parser, PM_BINDING_POWER_NOT, PM_ERR_EXPECT_EXPRESSION_AFTER_LESS_LESS); + pm_node_t *expression = parse_value_expression(parser, PM_BINDING_POWER_NOT, PM_ERR_EXPECT_EXPRESSION_AFTER_LESS_LESS); pm_parser_scope_push(parser, true); accept2(parser, PM_TOKEN_NEWLINE, PM_TOKEN_SEMICOLON); diff --git a/test/prism/errors_test.rb b/test/prism/errors_test.rb index 5572a3254f..6f6df71d14 100644 --- a/test/prism/errors_test.rb +++ b/test/prism/errors_test.rb @@ -1508,6 +1508,8 @@ module Prism end class A < (return) end + class << (return) + end for x in (return) end RUBY @@ -1520,6 +1522,7 @@ module Prism [message, 80..86], [message, 110..116], [message, 132..138], + [message, 154..160], ], compare_ripper: false # Ripper does not check 'void value expression'. end