parse.y: Fix a bug of obj[42, &blk] ||= foo bar

Follow up of r28123 (!)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
mame 2018-01-15 06:25:42 +00:00
parent 53c6960ddf
commit c2052b027c
2 changed files with 30 additions and 1 deletions

View file

@ -457,6 +457,30 @@ class TestParse < Test::Unit::TestCase
end
end
def test_op_asgn1_with_block
t = Object.new
a = []
blk = proc {|x| a << x }
def t.[](_)
yield(:aref)
nil
end
def t.[]=(_, _)
yield(:aset)
end
def t.dummy(_)
end
eval <<-END, nil, __FILE__, __LINE__+1
t[42, &blk] ||= 42
END
assert_equal([:aref, :aset], a)
a.clear
eval <<-END, nil, __FILE__, __LINE__+1
t[42, &blk] ||= t.dummy 42 # command_asgn test
END
assert_equal([:aref, :aset], a)
end
def test_backquote
t = Object.new