From dcb9ded6c9148a31361ba2318ed7d57fd0c41431 Mon Sep 17 00:00:00 2001 From: Matt Valentine-House Date: Thu, 2 Nov 2023 22:37:30 +0000 Subject: [PRISM] Fix CallNode with arguments when popped Previously emitting a call node with an argument followed by another node would cause the argument to be mistakenly omitted from the argument list causing a stack underflow. ``` PRISM: ************************************************** -- raw disasm-------- 0000 putself ( 0) 0001 send , nil ( 0) * 0004 pop ( 0) 0005 putobject 1 ( 0) 0007 leave ( 0) --------------------- ``` --- test/ruby/test_compile_prism.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'test') diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb index eb6a4f8b9a..494b8c87d2 100644 --- a/test/ruby/test_compile_prism.rb +++ b/test/ruby/test_compile_prism.rb @@ -694,6 +694,12 @@ module Prism def test_CallNode assert_prism_eval("to_s") + + # with arguments + assert_prism_eval("eval '1'") + + # with arguments and popped + assert_prism_eval("eval '1'; 1") end def test_CallAndWriteNode -- cgit v1.2.3