File tree Expand file tree Collapse file tree 2 files changed +8
-6
lines changed
compiler/src/dotty/tools/dotc/typer Expand file tree Collapse file tree 2 files changed +8
-6
lines changed Original file line number Diff line number Diff line change @@ -39,9 +39,7 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
3939 if defn.SpecialClassTagClasses .contains(sym) then
4040 classTag.select(sym.name.toTermName)
4141 else
42- val clsOfType = erasure(tp) match
43- case JavaArrayType (elemType) => defn.ArrayOf (elemType)
44- case etp => etp
42+ val clsOfType = escapeJavaArray(erasure(tp))
4543 classTag.select(nme.apply).appliedToType(tp).appliedTo(clsOf(clsOfType))
4644 tag.withSpan(span)
4745 case tp => EmptyTree
@@ -375,9 +373,9 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
375373 synthesizedSumMirror(formal, span)
376374 case _ => EmptyTree
377375
378- private def escapeJavaArray (elemTp : Type )(using Context ): Type = elemTp match
379- case JavaArrayType (elemTp1 ) => defn.ArrayOf (escapeJavaArray(elemTp1 ))
380- case _ => elemTp
376+ private def escapeJavaArray (tp : Type )(using Context ): Type = tp match
377+ case JavaArrayType (elemTp ) => defn.ArrayOf (escapeJavaArray(elemTp ))
378+ case _ => tp
381379
382380 private enum ManifestKind :
383381 case Full , Opt , Clss
Original file line number Diff line number Diff line change 1+ @ main def Test =
2+ val `ct_[[I` = reflect.classTag[Array [Array [Int ]] | Array [Array [Int ]]]
3+ val arrArrInt = Array (Array (1 ))
4+ assert(`ct_[[I`.runtimeClass == arrArrInt.getClass)
You can’t perform that action at this time.
0 commit comments