@@ -612,7 +612,6 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
612612
613613
614614 private def mkArrayConstructorCall (arr : ArrayBType , app : Apply , args : List [Tree ]) = {
615- genLoadArguments(args, paramTKs(app))
616615 val dims = arr.dimension
617616 var elemKind = arr.elementType
618617 val argsSize = args.length
@@ -626,10 +625,11 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
626625 */
627626 for (i <- args.length until dims) elemKind = ArrayBType (elemKind)
628627 }
628+ genLoadArguments(args, List .fill(args.size)(INT ))
629629 (argsSize : @ switch) match {
630630 case 1 => bc newarray elemKind
631631 case _ =>
632- val descr = ('[' * argsSize) + elemKind.descriptor // denotes the same as: arrayN(elemKind, argsSize).descriptor
632+ val descr = (" [ " * argsSize) + elemKind.descriptor // denotes the same as: arrayN(elemKind, argsSize).descriptor
633633 mnode.visitMultiANewArrayInsn(descr, argsSize)
634634 }
635635 }
@@ -640,8 +640,10 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder {
640640 lineNumber(app)
641641 app match {
642642 case Apply (_, args) if isSyntheticArrayConstructor(app.symbol) =>
643- generatedType = toTypeKind(app.tpe)
644- mkArrayConstructorCall(generatedType.asArrayBType, app, args)
643+ val List (elemClaz, Literal (c : Constant ), ArrayValue (_, dims)) = args
644+
645+ generatedType = toTypeKind(c.typeValue)
646+ mkArrayConstructorCall(generatedType.asArrayBType, app, dims)
645647 case Apply (t : TypeApply , _) =>
646648
647649 generatedType = genTypeApply(t)
0 commit comments