Files
codeql/ruby/ql/test/library-tests/controlflow/graph/raise.rb
2021-10-15 11:47:28 +02:00

171 lines
2.0 KiB
Ruby

class ExceptionA < Exception
end
class ExceptionB < Exception
end
def m1 x
if x > 2
raise "x > 2"
end
puts "x <= 2"
end
def m2 b
begin
if b
raise ExceptionA
end
rescue ExceptionA
puts "Rescued"
end
puts "End m2"
end
def m3 b
begin
if b
raise ExceptionA
end
rescue
puts "Rescued"
end
puts "End m3"
end
def m4 b
begin
if b
raise ExceptionA
end
rescue => e
puts "Rescued {e}"
end
puts "End m4"
end
def m5 b
begin
if b
raise ExceptionA
end
rescue => e
end
puts "End m5"
end
def m6 b
begin
if b
raise ExceptionA
end
rescue ExceptionA, ExceptionB => e
puts "Rescued {e}"
end
puts "End m6"
end
def m7 x
if x > 2
raise "x > 2"
elsif x < 0
return "x < 0"
end
puts "0 <= x <= 2"
ensure
puts "ensure"
end
def m8 x
puts "Begin m8"
begin
if x > 2
raise "x > 2"
elsif x < 0
return "x < 0"
end
puts "0 <= x <= 2"
ensure
puts "ensure"
end
puts "End m8"
end
def m9(x, b1, b2)
puts "Begin m9"
begin
if x > 2
raise "x > 2"
elsif x < 0
return "x < 0"
end
puts "0 <= x <= 2"
ensure
puts "outer ensure"
begin
if b1
raise "b1 is true"
end
ensure
puts "inner ensure"
end
end
puts "End m9"
ensure
puts "method ensure"
if b2
raise "b2 is true"
end
end
def m10(p = (raise "Exception"))
rescue
puts "Will not get executed if p is not supplied"
ensure
puts "Will not get executed if p is not supplied"
end
def m11 b
begin
if b
raise ExceptionA
end
rescue ExceptionA
rescue ExceptionB
puts "ExceptionB"
ensure
puts "Ensure"
end
puts "End m11"
end
def m12 b
if b
raise ""
end
ensure
return 3
end
def m13
ensure
end
def m14 element
element.each { |elem| raise "" if element.nil? }
end
def m15
foo do
bar ->(x) do
raise "" unless x
end
end
end
class C
def self.m()
raise ""
end
end