From d51529244ff5b10fa280c559d2d21383f5a5f842 Mon Sep 17 00:00:00 2001 From: Kazuki Tsujimoto Date: Sun, 26 Mar 2023 18:09:43 +0900 Subject: [PATCH] [Bug #19175] p_kw without a sub pattern should be `assignable' --- parse.y | 2 +- test/ripper/test_sexp.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/parse.y b/parse.y index 27f944c1b2..4b44f7e440 100644 --- a/parse.y +++ b/parse.y @@ -4732,7 +4732,7 @@ p_kw : p_kw_label p_expr /*%%%*/ $$ = list_append(p, NEW_LIST(NEW_LIT(ID2SYM($1), &@$), &@$), assignable(p, $1, 0, &@$)); /*% %*/ - /*% ripper: rb_ary_new_from_args(2, get_value($1), Qnil) %*/ + /*% ripper: rb_ary_new_from_args(2, get_value(assignable(p, $1)), Qnil) %*/ } ; diff --git a/test/ripper/test_sexp.rb b/test/ripper/test_sexp.rb index b7cabdb8b0..1bc99b9b97 100644 --- a/test/ripper/test_sexp.rb +++ b/test/ripper/test_sexp.rb @@ -502,6 +502,14 @@ eot [:aryptn, nil, nil, [:var_field, [:@ident, "a", [1, 13]]], nil], [[:var_ref, [:@ident, "a", [1, 17]]]], nil]], + + [__LINE__, %q{ case 0; in {a:}; a; end } ] => + [:case, + [:@int, "0", [1, 5]], + [:in, + [:hshptn, nil, [[[:@label, "a:", [1, 12]], nil]], nil], + [[:var_ref, [:@ident, "a", [1, 17]]]], + nil]], } pattern_matching_data.each do |(i, src), expected| define_method(:"test_pattern_matching_#{i}") do