summaryrefslogtreecommitdiff
path: root/bootstraptest/test_yjit.rb
diff options
context:
space:
mode:
authorJohn Hawthorn <john@hawthorn.email>2021-12-30 11:13:37 -0800
committerJohn Hawthorn <john@hawthorn.email>2021-12-31 17:30:47 -0800
commit5414de4b6e4372af832e338f8eb7a9fe8de17c84 (patch)
treed2d8de6dc8a182558e6719508393b03017e8f112 /bootstraptest/test_yjit.rb
parent2fac066b3ad67767107cab30e1dd9a00562f1376 (diff)
YJIT: Fix SP index with optarg and unordered kwarg
Previously when we were calling a method with an optional argument and multiple keywords arguments which weren't in the order the receiver expected we would use the wrong SP index to rearrange them. Fixes Bug #18453
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5379
Diffstat (limited to 'bootstraptest/test_yjit.rb')
-rw-r--r--bootstraptest/test_yjit.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/bootstraptest/test_yjit.rb b/bootstraptest/test_yjit.rb
index 05947c48ed..30298a820d 100644
--- a/bootstraptest/test_yjit.rb
+++ b/bootstraptest/test_yjit.rb
@@ -2280,6 +2280,22 @@ assert_equal '[[1, 2, 3]]', %q{
5.times.map { opt_and_kwargs(1, 2, c: 3) }.uniq
}
+# Bug #18453
+assert_equal '[[1, nil, 2]]', %q{
+ def opt_and_kwargs(a = {}, b: nil, c: nil)
+ [a, b, c]
+ end
+
+ 5.times.map { opt_and_kwargs(1, c: 2) }.uniq
+}
+
+assert_equal '[[{}, nil, 1]]', %q{
+ def opt_and_kwargs(a = {}, b: nil, c: nil)
+ [a, b, c]
+ end
+
+ 5.times.map { opt_and_kwargs(c: 1) }.uniq
+}
# leading and keyword arguments are swapped into the right order
assert_equal '[[1, 2, 3, 4, 5, 6]]', %q{