mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* compile.c (iseq_compile_each): remove "retry" in block.
("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
This commit is contained in:
parent
def4a99af2
commit
860b40fd63
8 changed files with 45 additions and 62 deletions
21
ChangeLog
21
ChangeLog
|
@ -1,3 +1,24 @@
|
||||||
|
Wed Dec 19 17:34:50 2007 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
|
* compile.c (iseq_compile_each): remove "retry" in block.
|
||||||
|
("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.
|
||||||
|
|
||||||
Wed Dec 19 17:12:59 2007 Koichi Sasada <ko1@atdot.net>
|
Wed Dec 19 17:12:59 2007 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
* bootstraptest/test_knownbug.rb, test_block.rb:
|
* bootstraptest/test_knownbug.rb, test_block.rb:
|
||||||
|
|
|
@ -147,15 +147,15 @@ assert_equal %q{131}, %q{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert_equal %q{ok}, %q{
|
assert_equal %q{ok}, %q{
|
||||||
def m a
|
begin
|
||||||
yield
|
eval %q{
|
||||||
end
|
1.times{
|
||||||
|
retry
|
||||||
i=0
|
}
|
||||||
m(i+=1){
|
|
||||||
retry if i<10
|
|
||||||
:ok
|
|
||||||
}
|
}
|
||||||
|
rescue SyntaxError
|
||||||
|
:ok
|
||||||
|
end
|
||||||
}
|
}
|
||||||
assert_equal %q{3}, %q{
|
assert_equal %q{3}, %q{
|
||||||
def m
|
def m
|
||||||
|
|
|
@ -3078,8 +3078,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NODE_RETRY:{
|
case NODE_RETRY:{
|
||||||
if (iseq->type == ISEQ_TYPE_BLOCK ||
|
if (iseq->type == ISEQ_TYPE_RESCUE) {
|
||||||
iseq->type == ISEQ_TYPE_RESCUE) {
|
|
||||||
ADD_INSN(ret, nd_line(node), putnil);
|
ADD_INSN(ret, nd_line(node), putnil);
|
||||||
ADD_INSN1(ret, nd_line(node), throw,
|
ADD_INSN1(ret, nd_line(node), throw,
|
||||||
INT2FIX(0x04) /* TAG_RETRY */ );
|
INT2FIX(0x04) /* TAG_RETRY */ );
|
||||||
|
|
|
@ -20,8 +20,6 @@ module DRb
|
||||||
end
|
end
|
||||||
if jump_error
|
if jump_error
|
||||||
case jump_error.reason
|
case jump_error.reason
|
||||||
when :retry
|
|
||||||
retry
|
|
||||||
when :break
|
when :break
|
||||||
break(jump_error.exit_value)
|
break(jump_error.exit_value)
|
||||||
else
|
else
|
||||||
|
|
|
@ -45,15 +45,3 @@ ro.each do |x|
|
||||||
puts count
|
puts count
|
||||||
redo if count == 3
|
redo if count == 3
|
||||||
end
|
end
|
||||||
|
|
||||||
puts "# each, retry"
|
|
||||||
retried = false
|
|
||||||
ro.each do |x|
|
|
||||||
puts x
|
|
||||||
if x == 4 && !retried
|
|
||||||
puts 'retry'
|
|
||||||
retried = true
|
|
||||||
retry
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
|
@ -916,18 +916,6 @@ end
|
||||||
test_ok($x.size == 7)
|
test_ok($x.size == 7)
|
||||||
test_ok($x == [1, 2, 3, 4, 5, 6, 7])
|
test_ok($x == [1, 2, 3, 4, 5, 6, 7])
|
||||||
|
|
||||||
$done = false
|
|
||||||
$x = []
|
|
||||||
for i in 1 .. 7 # see how retry works in iterator loop
|
|
||||||
if i == 4 and not $done
|
|
||||||
$done = true
|
|
||||||
retry
|
|
||||||
end
|
|
||||||
$x.push(i)
|
|
||||||
end
|
|
||||||
test_ok($x.size == 10)
|
|
||||||
test_ok($x == [1, 2, 3, 1, 2, 3, 4, 5, 6, 7])
|
|
||||||
|
|
||||||
# append method to built-in class
|
# append method to built-in class
|
||||||
class Array
|
class Array
|
||||||
def iter_test1
|
def iter_test1
|
||||||
|
@ -1887,7 +1875,7 @@ rescue Exception
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
|
||||||
for script in Dir["#{dir}{lib,sample,ext}/**/*.rb"]
|
for script in Dir["#{dir}{lib,sample,ext,test}/**/*.rb"]
|
||||||
unless valid_syntax? IO::read(script), script
|
unless valid_syntax? IO::read(script), script
|
||||||
STDERR.puts script
|
STDERR.puts script
|
||||||
$bad = true
|
$bad = true
|
||||||
|
|
|
@ -305,18 +305,19 @@ module DRbAry
|
||||||
assert_equal([1, 2, 'III', 'III', 4, 'five', 6], ary)
|
assert_equal([1, 2, 'III', 'III', 4, 'five', 6], ary)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_04_retry
|
# retry in block is not supported on ruby 1.9
|
||||||
retried = false
|
#def test_04_retry
|
||||||
ary = []
|
# retried = false
|
||||||
@there.each do |x|
|
# ary = []
|
||||||
ary.push x
|
# @there.each do |x|
|
||||||
if x == 4 && !retried
|
# ary.push x
|
||||||
retried = true
|
# if x == 4 && !retried
|
||||||
retry
|
# retried = true
|
||||||
end
|
# retry
|
||||||
end
|
# end
|
||||||
assert_equal([1, 2, 'III', 4, 1, 2, 'III', 4, 'five', 6], ary)
|
# end
|
||||||
end
|
# assert_equal([1, 2, 'III', 4, 1, 2, 'III', 4, 'five', 6], ary)
|
||||||
|
#end
|
||||||
|
|
||||||
def test_05_break
|
def test_05_break
|
||||||
ary = []
|
ary = []
|
||||||
|
|
|
@ -69,7 +69,7 @@ class TestIterator < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# iterator break/redo/next/retry
|
# iterator break/redo/next
|
||||||
def test_break
|
def test_break
|
||||||
done = true
|
done = true
|
||||||
loop{
|
loop{
|
||||||
|
@ -104,18 +104,6 @@ class TestIterator < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
assert_equal(7, $x.size)
|
assert_equal(7, $x.size)
|
||||||
assert_equal([1, 2, 3, 4, 5, 6, 7], $x)
|
assert_equal([1, 2, 3, 4, 5, 6, 7], $x)
|
||||||
|
|
||||||
$done = false
|
|
||||||
$x = []
|
|
||||||
for i in 1 .. 7 # see how retry works in iterator loop
|
|
||||||
if i == 4 and not $done
|
|
||||||
$done = true
|
|
||||||
retry
|
|
||||||
end
|
|
||||||
$x.push(i)
|
|
||||||
end
|
|
||||||
assert_equal(10, $x.size)
|
|
||||||
assert_equal([1, 2, 3, 1, 2, 3, 4, 5, 6, 7], $x)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_append_method_to_built_in_class
|
def test_append_method_to_built_in_class
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue