New J2K: Add support of vararg parameters in method declaration
This commit is contained in:
committed by
Ilya Kirillov
parent
6fbc180f92
commit
bbbadb0431
@@ -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
|
||||
|
||||
@@ -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(":")
|
||||
|
||||
@@ -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 <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitParameter(this, data)
|
||||
|
||||
@@ -287,7 +287,9 @@ interface JKLiteralExpression : JKExpression {
|
||||
}
|
||||
}
|
||||
|
||||
interface JKParameter : JKVariable, JKModifiersListOwner
|
||||
interface JKParameter : JKVariable, JKModifiersListOwner {
|
||||
var isVarArgs: Boolean
|
||||
}
|
||||
|
||||
interface JKStringLiteralExpression : JKLiteralExpression {
|
||||
val text: String
|
||||
|
||||
Reference in New Issue
Block a user