summaryrefslogtreecommitdiff
path: root/test/ruby/test_iseq.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_iseq.rb')
-rw-r--r--test/ruby/test_iseq.rb31
1 files changed, 28 insertions, 3 deletions
diff --git a/test/ruby/test_iseq.rb b/test/ruby/test_iseq.rb
index 230cea9b91..621320c2b0 100644
--- a/test/ruby/test_iseq.rb
+++ b/test/ruby/test_iseq.rb
@@ -9,6 +9,11 @@ class TestISeq < Test::Unit::TestCase
assert_normal_exit('p RubyVM::InstructionSequence.compile("1", "mac", "", 0).to_a', bug5894)
end
+ def lines src
+ body = RubyVM::InstructionSequence.new(src).to_a[13]
+ lines = body.find_all{|e| e.kind_of? Fixnum}
+ end
+
def test_to_a_lines
src = <<-EOS
p __LINE__ # 1
@@ -16,9 +21,29 @@ class TestISeq < Test::Unit::TestCase
# 3
p __LINE__ # 4
EOS
- body = RubyVM::InstructionSequence.new(src).to_a[13]
- lines = body.find_all{|e| e.kind_of? Fixnum}
- assert_equal [1, 2, 4], lines
+ assert_equal [1, 2, 4], lines(src)
+
+ src = <<-EOS
+ # 1
+ p __LINE__ # 2
+ # 3
+ p __LINE__ # 4
+ # 5
+ EOS
+ assert_equal [2, 4], lines(src)
+
+ src = <<-EOS
+ 1 # should be optimized out
+ 2 # should be optimized out
+ p __LINE__ # 3
+ p __LINE__ # 4
+ 5 # should be optimized out
+ 6 # should be optimized out
+ p __LINE__ # 7
+ 8 # should be optimized out
+ 9
+ EOS
+ assert_equal [3, 4, 7, 9], lines(src)
end
def test_unsupport_type