summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorRandy Stauner <randy@r4s6.net>2025-11-14 14:50:39 -0700
committerMax Bernstein <tekknolagi@gmail.com>2025-12-09 10:19:38 -0500
commitc42f4d80eabc6b9b4117253a2ba2ee0b9526f253 (patch)
tree6cbc172d4b54cde385718c3c68fb402d9f7e4dca /test/ruby
parent76d845aa7a0fa07aa3e733528cbd7e48feccfd59 (diff)
ZJIT: Handle caller_kwarg in direct send when all keyword params are required
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_zjit.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/ruby/test_zjit.rb b/test/ruby/test_zjit.rb
index 18e10f5206..81d9404070 100644
--- a/test/ruby/test_zjit.rb
+++ b/test/ruby/test_zjit.rb
@@ -617,6 +617,15 @@ class TestZJIT < Test::Unit::TestCase
}, call_threshold: 2
end
+ def test_send_kwarg_with_too_many_args_to_c_call
+ assert_compiles '"a b c d {kwargs: :e}"', %q{
+ def test(a:, b:, c:, d:, e:) = sprintf("%s %s %s %s %s", a, b, c, d, kwargs: e)
+ def entry = test(e: :e, d: :d, c: :c, a: :a, b: :b)
+ entry
+ entry
+ }, call_threshold: 2
+ end
+
def test_send_kwrest
assert_compiles '{a: 3}', %q{
def test(**kwargs) = kwargs
@@ -635,6 +644,15 @@ class TestZJIT < Test::Unit::TestCase
}, call_threshold: 2
end
+ def test_send_req_opt_kwreq
+ assert_compiles '[[1, 2, 3], [-1, -2, -3]]', %q{
+ def test(a, b = 2, c:) = [a, b, c]
+ def entry = [test(1, c: 3), test(-1, -2, c: -3)] # specify all, change kw order
+ entry
+ entry
+ }, call_threshold: 2
+ end
+
def test_send_req_opt_kwreq_kwopt
assert_compiles '[[1, 2, 3, 4], [-1, -2, -3, -4]]', %q{
def test(a, b = 2, c:, d: 4) = [a, b, c, d]