Skip to content

Commit 6de0630

Browse files
committed
Fix erasure of Java Array[T]
Should be erased to Object[], not Object.
1 parent bef40b4 commit 6de0630

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ class TypeErasure(isJava: Boolean, semiEraseVCs: Boolean, isConstructor: Boolean
389389
def arrayErasure(tpToErase: Type) =
390390
erasureFn(isJava, semiEraseVCs = false, isConstructor, wildcardOK)(tpToErase)
391391
if (elemtp derivesFrom defn.NullClass) JavaArrayType(defn.ObjectType)
392-
else if (isUnboundedGeneric(elemtp)) defn.ObjectType
392+
else if (isUnboundedGeneric(elemtp) && !isJava) defn.ObjectType
393393
else JavaArrayType(arrayErasure(elemtp))
394394
}
395395

tests/run/i1387.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
object Test {
2+
3+
def main(args: Array[String]): Unit =
4+
classOf[java.nio.file.AccessMode].getEnumConstants
5+
6+
}

0 commit comments

Comments
 (0)