1
0
Fork 0
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:
ko1 2007-12-19 08:46:49 +00:00
parent def4a99af2
commit 860b40fd63
8 changed files with 45 additions and 62 deletions

View file

@ -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:

View file

@ -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

View file

@ -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 */ );

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 = []

View file

@ -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