From 817764bd82513e2a0a672f5958f65854ea172c08 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Tue, 18 May 2021 17:11:39 +0900 Subject: simple rescue+while+break should not use `throw` 609de71f043e8ba34f22b9993e444e2e5bb05709 fixes the issue by using `throw` insn if `ensure` is used. However, that patch introduce additional `throw` even if it is not needed. This patch solves the issue. This issue is pointed by @mame. --- test/ruby/test_exception.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'test/ruby/test_exception.rb') diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index af29163ce3..8c4e6889ab 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -104,6 +104,17 @@ class TestException < Test::Unit::TestCase end end end + + iseq = RubyVM::InstructionSequence.compile(<<-RUBY) + begin + while true + break + end + rescue + end + RUBY + + assert_equal false, iseq.to_a[13].any?{|(e,_)| e == :throw} end def test_exception_in_ensure_with_redo -- cgit v1.2.3