From 5de26bc0319d8b0de315cb90e68345a816673fa6 Mon Sep 17 00:00:00 2001 From: Jimmy Miller Date: Tue, 21 Mar 2023 12:57:26 -0400 Subject: YJIT: Fix incorrect exit in splat (#7575) So by itself, this shouldn't have been a correctness issue, but we also pop the stack for block_args. Doing stack manipulation like that and then side-exiting causes issues. So, while this fixes the immediate failure, we have a bigger issue with block_args popping and then exiting that we need to deal with. --- bootstraptest/test_yjit.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'bootstraptest') diff --git a/bootstraptest/test_yjit.rb b/bootstraptest/test_yjit.rb index 8902cd6cde..cab905a2af 100644 --- a/bootstraptest/test_yjit.rb +++ b/bootstraptest/test_yjit.rb @@ -3662,3 +3662,18 @@ assert_equal '[1, 2, 3]', %q{ end send(:bar, 1, 2, 3) } + +# Fix splat block arg bad compilation +assert_equal "foo", %q{ + def literal(*args, &block) + s = ''.dup + literal_append(s, *args, &block) + s + end + + def literal_append(sql, v) + sql << v + end + + literal("foo") +} -- cgit v1.2.1