diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index 6d4505dec27..947d342c285 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -506,9 +506,14 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { } fun PsiParameter.toJK(): JKParameter { + val rawType = with(expressionTreeMapper) { typeElement?.toJK() } ?: JKTypeElementImpl(JKNoTypeImpl) + val type = + if (isVarArgs && rawType.type is JKJavaArrayType) JKTypeElementImpl((rawType.type as JKJavaArrayType).type) + else rawType return JKParameterImpl( - with(expressionTreeMapper) { typeElement?.toJK() } ?: JKTypeElementImpl(JKNoTypeImpl), - JKNameIdentifierImpl(name!!) + type, + JKNameIdentifierImpl(name!!), + isVarArgs ).also { symbolProvider.provideUniverseSymbol(this, it) it.psi = this diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index 75bbf051dbb..6c59af9ca56 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -299,6 +299,9 @@ class NewCodeBuilder { override fun visitParameter(parameter: JKParameter) { renderModifiersList(parameter) printer.printWithNoIndent(" ") + if (parameter.isVarArgs) { + printer.printWithNoIndent("vararg ") + } parameter.name.accept(this) if (parameter.type.present() && parameter.type.type !is JKContextType) { printer.printWithNoIndent(":") diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt index 719aadbaabc..8ff085e675a 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -83,6 +83,7 @@ class JKForLoopVariableImpl( class JKParameterImpl( type: JKTypeElement, name: JKNameIdentifier, + override var isVarArgs: Boolean = false, initializer: JKExpression = JKStubExpressionImpl() ) : JKParameter, JKBranchElementBase(), PsiOwner by PsiOwnerImpl() { override fun accept(visitor: JKVisitor, data: D): R = visitor.visitParameter(this, data) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index a2a64baccdf..49b46fdec85 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -287,7 +287,9 @@ interface JKLiteralExpression : JKExpression { } } -interface JKParameter : JKVariable, JKModifiersListOwner +interface JKParameter : JKVariable, JKModifiersListOwner { + var isVarArgs: Boolean +} interface JKStringLiteralExpression : JKLiteralExpression { val text: String