From edb755c84b6ccbb9fed1c04aa37080d4e884a434 Mon Sep 17 00:00:00 2001 From: Matt Valentine-House Date: Mon, 5 Feb 2024 16:12:46 +0000 Subject: [PATCH] [PRISM] Add eval tests --- test/ruby/test_compile_prism.rb | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb index 927ce3fa0e..3dbc634828 100644 --- a/test/ruby/test_compile_prism.rb +++ b/test/ruby/test_compile_prism.rb @@ -2643,6 +2643,43 @@ end # Miscellaneous # ############################################################################ + def test_eval + assert_prism_eval("eval('1 + 1')", raw: true) + assert_prism_eval("a = 1; eval('a + 1')", raw: true) + + assert_prism_eval(<<~CODE, raw: true) + def prism_eval_splat(**bar) + eval("bar") + end + prism_eval_splat(bar: 10) + CODE + + assert_prism_eval(<<~CODE, raw: true) + def prism_eval_keywords(baz:) + eval("baz") + end + prism_eval_keywords(baz: 10) + CODE + + assert_prism_eval(<<~CODE, raw: true) + [1].each do |a| + [2].each do |b| + c = 3 + eval("a + b + c") + end + end + CODE + + assert_prism_eval(<<~CODE, raw: true) + def prism_eval_binding(b) + eval("bar", b) + end + + bar = :ok + prism_eval_binding(binding) + CODE + end + def test_ScopeNode assert_separately(%w[], <<~'RUBY') def compare_eval(source)