Skip to content

Commit 120042f

Browse files
committed
fix: correctly require a ClassTag when building a multidimensional Array
1 parent fbbae09 commit 120042f

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

compiler/src/dotty/tools/dotc/typer/Applications.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1433,7 +1433,7 @@ trait Applications extends Compatibility {
14331433
.select(defn.newGenericArrayMethod).withSpan(tree.span)
14341434
.appliedToTypeTrees(targs).appliedToTermArgs(args)
14351435

1436-
if (TypeErasure.isGeneric(targ.tpe))
1436+
if TypeErasure.isGeneric(targ.tpe) || targ.tpe.derivesFrom(defn.ArrayClass) then
14371437
newGenericArrayCall
14381438
else tree
14391439
case _ =>

tests/run/i23901/MyArray_1.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import scala.reflect.ClassTag
2+
3+
object MyArray:
4+
def empty[T: ClassTag]: Array[Array[T]] = new Array[Array[T]](0)

tests/run/i23901/Test_2.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@main def Test =
2+
val arr: Array[Array[String]] = MyArray.empty[String]
3+
assert(arr.length == 0)

0 commit comments

Comments
 (0)