1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/bootstraptest/test_jump.rb
ko1 860b40fd63 * 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
2007-12-19 08:46:49 +00:00

250 lines
2.6 KiB
Ruby

assert_equal %q{ok}, %q{
def m
:ng1
mm{
yield
}
:ng2
end
def mm
:ng3
yield
:ng4
end
m{
break :ok
}
}
assert_equal %q{ok}, %q{
3.times{
break :ok
}
}
assert_equal %q{}, %q{
catch(:foo){
throw :foo
}
}
assert_equal %q{false}, %q{
catch(:foo){
throw :foo, false
}
}
assert_equal %q{}, %q{
catch(:foo){
throw :foo, nil
}
}
assert_equal %q{ok}, %q{
catch(:foo){
throw :foo, :ok
}
}
assert_equal %q{}, %q{
catch(:foo){
1.times{
throw :foo
}
}
}
assert_equal %q{ok}, %q{
catch(:foo){
1.times{
throw :foo, :ok
}
}
}
assert_equal %q{ok}, %q{
catch(:foo){
catch(:bar){
throw :foo, :ok
}
:ng
}
}
assert_equal %q{ok}, %q{
catch(:foo){
catch(:bar){
1.times{
throw :foo, :ok
}
}
:ng
}
}
assert_equal %q{2}, %q{
module Enumerable
def all_?
self.each{|e|
unless yield(e)
return false
end
}
true
end
end
xxx = 0
[1,2].each{|bi|
[3,4].each{|bj|
[true, nil, true].all_?{|be| be}
break
}
xxx += 1
}
xxx
}
assert_equal %q{ok}, %q{
def m
yield
end
m{
begin
ensure
break :ok
end
}
}
assert_equal %q{ok}, %q{
def m
yield
:ok
end
i=0
m{
if i>10
i*i
else
i+=1
next
end
}
}
assert_equal %q{ok}, %q{
def m
yield
end
m{
next :ok
}
}
assert_equal %q{131}, %q{
def m
yield + 10
end
i=0
m{
if i>10
i*i
else
i+=1
redo
end
}
}
assert_equal %q{ok}, %q{
begin
eval %q{
1.times{
retry
}
}
rescue SyntaxError
:ok
end
}
assert_equal %q{3}, %q{
def m
return 3
end
m
}
assert_equal %q{ok}, %q{
def m
:ng1
mm{
return :ok
}
:ng2
end
def mm
:ng3
yield
:ng4
end
m
}
assert_equal %q{100}, %q{
$i = 0
def m
begin
iter{
return
}
ensure
$i = 100
end
end
def iter
yield
end
m
$i
}
assert_equal %q{ok}, %q{
def m
begin
raise
rescue
return :ok
end
:ng
end
m
}
assert_equal %q{1}, %q{
def m
begin
raise
rescue
return 1
end
end
m
}
assert_equal %q{1}, %q{
def m
begin
#
ensure
return 1
end
end
m
}
assert_equal 'ok', %q{
begin
catch {|t| throw t, :ok }
rescue ArgumentError
:ng
end
}, '[ruby-dev:31609]'
assert_equal "1", %q{
catch do |t|
begin
throw t, 1
2
ensure
3
end
end
}, "[ruby-dev:31698]"