diff options
author | Kazuki Tsujimoto <kazuki@callcc.net> | 2023-03-26 18:09:43 +0900 |
---|---|---|
committer | Kazuki Tsujimoto <kazuki@callcc.net> | 2023-03-26 18:57:34 +0900 |
commit | d51529244ff5b10fa280c559d2d21383f5a5f842 (patch) | |
tree | 0f1f7cede44e45461d456cbc1215ed9c735d1dc5 | |
parent | 6c0925ba7017efde6091e2ec4f1a6be268166696 (diff) |
[Bug #19175] p_kw without a sub pattern should be `assignable'
-rw-r--r-- | parse.y | 2 | ||||
-rw-r--r-- | test/ripper/test_sexp.rb | 8 |
2 files changed, 9 insertions, 1 deletions
@@ -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 |