From 13b7cddc2b7fb224065677b9c0030898ebbeb21e Mon Sep 17 00:00:00 2001 From: Jemma Issroff Date: Mon, 27 Nov 2023 08:04:24 -0500 Subject: [PRISM] Compile IndexOrWriteNode --- test/ruby/test_compile_prism.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'test/ruby') diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb index a01666ee54..96aad1ab5b 100644 --- a/test/ruby/test_compile_prism.rb +++ b/test/ruby/test_compile_prism.rb @@ -238,6 +238,27 @@ module Prism assert_prism_eval("$pit = 1") end + def test_IndexOrWriteNode + assert_prism_eval("[0][0] ||= 1") + assert_prism_eval("[nil][0] ||= 1") + + # Testing `[]` with a block passed in + assert_prism_eval(<<-CODE) + class CustomHash < Hash + def []=(key, value, &block) + super(block.call(key), value) + end + end + + hash = CustomHash.new + + # Call the custom method with a block that modifies + # the key before assignment + hash["key", &(Proc.new { _1.upcase })] ||= "value" + hash + CODE + end + def test_InstanceVariableAndWriteNode assert_prism_eval("@pit = 0; @pit &&= 1") end -- cgit v1.2.3