diff --git a/compiler/src/dotty/tools/dotc/transform/TryCatchPatterns.scala b/compiler/src/dotty/tools/dotc/transform/TryCatchPatterns.scala index 095c6af60766..6243f8ac1cad 100644 --- a/compiler/src/dotty/tools/dotc/transform/TryCatchPatterns.scala +++ b/compiler/src/dotty/tools/dotc/transform/TryCatchPatterns.scala @@ -71,7 +71,7 @@ class TryCatchPatterns extends MiniPhase { case _ => isDefaultCase(cdef) } - private def isSimpleThrowable(tp: Type)(using Context): Boolean = tp.stripped match { + private def isSimpleThrowable(tp: Type)(using Context): Boolean = tp.strippedDealias match { case tp @ TypeRef(pre, _) => (pre == NoPrefix || pre.typeSymbol.isStatic) && // Does not require outer class check !tp.symbol.is(Flags.Trait) && // Traits not supported by JVM diff --git a/tests/run/i24357.scala b/tests/run/i24357.scala new file mode 100644 index 000000000000..657451f5262b --- /dev/null +++ b/tests/run/i24357.scala @@ -0,0 +1,10 @@ +class E1 extends Exception +class E2 extends Exception + +type E1or2 = E1 | E2 + +@main def Test = + try throw new Exception {} + catch + case e: E1or2 => assert(e.isInstanceOf[E1or2]) + case _ => ()