Skip to content

Commit 73df472

Browse files
Merge pull request #14886 from dotty-staging/fix-12453
Prevent stack overflow ICEs in array erasure
2 parents e35b6ff + 07d6f27 commit 73df472

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

compiler/src/dotty/tools/dotc/core/TypeErasure.scala

+4-1
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,10 @@ class TypeErasure(sourceLanguage: SourceLanguage, semiEraseVCs: Boolean, isConst
682682
private def eraseArray(tp: Type)(using Context) = {
683683
val defn.ArrayOf(elemtp) = tp
684684
if (isGenericArrayElement(elemtp, isScala2 = sourceLanguage.isScala2)) defn.ObjectType
685-
else JavaArrayType(erasureFn(sourceLanguage, semiEraseVCs = false, isConstructor, isSymbol, wildcardOK)(elemtp))
685+
else
686+
try JavaArrayType(erasureFn(sourceLanguage, semiEraseVCs = false, isConstructor, isSymbol, wildcardOK)(elemtp))
687+
catch case ex: Throwable =>
688+
handleRecursive("erase array type", tp.show, ex)
686689
}
687690

688691
private def erasePair(tp: Type)(using Context): Type = {

0 commit comments

Comments
 (0)