summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKazuki Tsujimoto <kazuki@callcc.net>2023-03-26 18:09:43 +0900
committerKazuki Tsujimoto <kazuki@callcc.net>2023-03-26 18:57:34 +0900
commitd51529244ff5b10fa280c559d2d21383f5a5f842 (patch)
tree0f1f7cede44e45461d456cbc1215ed9c735d1dc5
parent6c0925ba7017efde6091e2ec4f1a6be268166696 (diff)
[Bug #19175] p_kw without a sub pattern should be `assignable'
-rw-r--r--parse.y2
-rw-r--r--test/ripper/test_sexp.rb8
2 files changed, 9 insertions, 1 deletions
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