mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
add tests for orphan/not-orphan proc/lambda.
This commit is contained in:
parent
711dfec3fa
commit
e4c1b19996
2 changed files with 54 additions and 0 deletions
|
@ -195,4 +195,31 @@ class TestLambdaParameters < Test::Unit::TestCase
|
|||
assert_match(/^#{ Regexp.quote(__FILE__) }$/, file)
|
||||
assert_equal(exp_lineno, lineno, "must be at the beginning of the block")
|
||||
end
|
||||
|
||||
def test_not_orphan_return
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b.call end; def m2(); m1(&-> { return 42 }) end }.m2)
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1(&-> { return 42 }).call end }.m2)
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1(&-> { return 42 }) end }.m2.call)
|
||||
end
|
||||
|
||||
def test_not_orphan_break
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b.call end; def m2(); m1(&-> { break 42 }) end }.m2)
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1(&-> { break 42 }).call end }.m2)
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1(&-> { break 42 }) end }.m2.call)
|
||||
end
|
||||
|
||||
def test_not_orphan_next
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b.call end; def m2(); m1(&-> { next 42 }) end }.m2)
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1(&-> { next 42 }).call end }.m2)
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1(&-> { next 42 }) end }.m2.call)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1484,4 +1484,31 @@ class TestProc < Test::Unit::TestCase
|
|||
(f >> 5).call(2)
|
||||
}
|
||||
end
|
||||
|
||||
def test_orphan_return
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b.call end; def m2(); m1 { return 42 } end }.m2)
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1 { return 42 }.call end }.m2)
|
||||
assert_raise(LocalJumpError) { Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1 { return 42 } end }.m2.call }
|
||||
end
|
||||
|
||||
def test_orphan_break
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b.call end; def m2(); m1 { break 42 } end }.m2 )
|
||||
assert_raise(LocalJumpError) { Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1 { break 42 }.call end }.m2 }
|
||||
assert_raise(LocalJumpError) { Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1 { break 42 } end }.m2.call }
|
||||
end
|
||||
|
||||
def test_not_orphan_next
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b.call end; def m2(); m1 { next 42 } end }.m2)
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1 { next 42 }.call end }.m2)
|
||||
assert_equal(42, Module.new { extend self
|
||||
def m1(&b) b end; def m2(); m1 { next 42 } end }.m2.call)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue