mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
860b40fd63
("iter{retry}" cause syntax error) Currently, "begin; ...; rescue; iter{retry}; end" cause syntax error too. * bootstraptest/test_jump.rb: ditto. * lib/drb/invokemethod.rb: ditto. * sample/drb/darrayc.rb: ditto. * sample/test.rb: ditto. * test/drb/drbtest.rb: ditto. * test/ruby/test_iterator.rb: ditto. * sample/test.rb: add a 'test' directory on the SYSTEM test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
34 lines
731 B
Ruby
34 lines
731 B
Ruby
# for ruby-1.8.0
|
|
|
|
module DRb
|
|
class DRbServer
|
|
module InvokeMethod18Mixin
|
|
def block_yield(x)
|
|
if x.size == 1 && x[0].class == Array
|
|
x[0] = DRbArray.new(x[0])
|
|
end
|
|
block_value = @block.call(*x)
|
|
end
|
|
|
|
def perform_with_block
|
|
@obj.__send__(@msg_id, *@argv) do |*x|
|
|
jump_error = nil
|
|
begin
|
|
block_value = block_yield(x)
|
|
rescue LocalJumpError
|
|
jump_error = $!
|
|
end
|
|
if jump_error
|
|
case jump_error.reason
|
|
when :break
|
|
break(jump_error.exit_value)
|
|
else
|
|
raise jump_error
|
|
end
|
|
end
|
|
block_value
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|