summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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