blob: 87586485c0c97f27399a269d44e6278af450cbd2 (
plain) (
tree)
|
|
object Test extends dotty.runtime.LegacyApp {
println(test1)
println(test2)
println(test3)
println(test4)
println(test5)
try { println(test6) } catch { case _: Throwable => println("OK") }
println(test7)
try { println(test8) } catch { case _: Throwable => println("OK") }
println(test9)
println(test10)
println(test11)
println(test12)
def test1 = {
var x = 1
try {
x = 2
} catch {
case _: NullPointerException => x = 3
case _: Throwable => x = 4
}
x
}
def test2 = {
var x = 1
try {
x = 2
try {
x = 21
} catch {
case _: Throwable => x = 22
}
x = 23
} catch {
case _: NullPointerException => x = 3
case _: Throwable => x = 4
}
x
}
def test3 = {
var x = 1
try {
try{x = 2} catch { case _: Throwable => x = 4 }
} catch {
case _: NullPointerException => x = 3
case _: Throwable => x = 4
}
x
}
def test4 = {
var x = 1
try {
x = 2
} catch {
case _: NullPointerException => x = 3
case _: Throwable => x = 4
}
try {
x = 5
} catch {
case _: NullPointerException => x = 6
}
x
}
def test5 = {
var x = 1
try {
x = 2
} catch {
case _: NullPointerException => try { x = 3 } catch { case f: Throwable => throw f }
case _: Throwable => x = 4; try { x = 41 } catch { case _: Exception => x = 42 }; x = 43
}
x
}
def test6: Int = {
var x = 1
try {
x = 2
(null: String).toString
} catch {
case e: NullPointerException =>
throw e
case _: Throwable =>
x = 3
return 1000
} finally {
x = 4
println(x)
}
x
}
def test7 = {
var x = 1
try {
x = 2
} finally {
try {
x = 4
} catch {
case _: Throwable => x = 5
}
}
x
}
def test8 = {
var x = 1
try {
throw new NullPointerException
} catch {
case e: Throwable => throw e
}
x
}
def test9 = {
try { "" match {
case s: String => 10
}} catch { case _: Throwable => 20 }
}
var x10 = 1
def test10: Int = {
try { 1 }
catch { case e if (x10 == 1) => 1 }
}
def test11: Unit = {
try { () }
catch { case e: Throwable => () }
}
class E1 extends Exception
class E2 extends Exception
class E3 extends Exception
def test12_impl(op: => Int) = try {
op
} catch {
case e: E1 => 2
case e: E2 => 3
case e: E3 => 4
}
def test12 =
test12_impl(1) +
test12_impl(throw new E1) +
test12_impl(throw new E2) +
test12_impl(throw new E3)
}
|