Skip to content

Commit fd81860

Browse files
committed
Fix #746: Generate efficient try cases for parameterized exceptions
We were missing a case for AppliedType
1 parent 5b1b747 commit fd81860

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

compiler/src/dotty/tools/dotc/transform/TryCatchPatterns.scala

+2
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ class TryCatchPatterns extends MiniPhase {
7676
(pre == NoPrefix || pre.widen.typeSymbol.isStatic) && // Does not require outer class check
7777
!tp.symbol.is(Flags.Trait) && // Traits not supported by JVM
7878
tp.derivesFrom(defn.ThrowableClass)
79+
case tp: AppliedType =>
80+
isSimpleThrowable(tp.tycon)
7981
case _ =>
8082
false
8183
}

tests/pos/i746.scala

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Test[T] {
2+
3+
def f(x: Int) = try {
4+
???
5+
}
6+
catch {
7+
case ex: scala.runtime.NonLocalReturnControl[T @scala.unchecked] =>
8+
???
9+
}
10+
}

0 commit comments

Comments
 (0)