diff --git a/compiler/src/dotty/tools/dotc/transform/TryCatchPatterns.scala b/compiler/src/dotty/tools/dotc/transform/TryCatchPatterns.scala index a669dcb79843..eb4183167097 100644 --- a/compiler/src/dotty/tools/dotc/transform/TryCatchPatterns.scala +++ b/compiler/src/dotty/tools/dotc/transform/TryCatchPatterns.scala @@ -76,6 +76,8 @@ class TryCatchPatterns extends MiniPhase { (pre == NoPrefix || pre.widen.typeSymbol.isStatic) && // Does not require outer class check !tp.symbol.is(Flags.Trait) && // Traits not supported by JVM tp.derivesFrom(defn.ThrowableClass) + case tp: AppliedType => + isSimpleThrowable(tp.tycon) case _ => false } diff --git a/tests/pos/i756.scala b/tests/pos/i756.scala new file mode 100644 index 000000000000..c221cfc00e28 --- /dev/null +++ b/tests/pos/i756.scala @@ -0,0 +1,10 @@ +class Test[T] { + + def f(x: Int) = try { + ??? + } + catch { + case ex: scala.runtime.NonLocalReturnControl[T @scala.unchecked] => + ??? + } +}