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 {
|
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(
|
return JKParameterImpl(
|
||||||
with(expressionTreeMapper) { typeElement?.toJK() } ?: JKTypeElementImpl(JKNoTypeImpl),
|
type,
|
||||||
JKNameIdentifierImpl(name!!)
|
JKNameIdentifierImpl(name!!),
|
||||||
|
isVarArgs
|
||||||
).also {
|
).also {
|
||||||
symbolProvider.provideUniverseSymbol(this, it)
|
symbolProvider.provideUniverseSymbol(this, it)
|
||||||
it.psi = this
|
it.psi = this
|
||||||
|
|||||||
@@ -299,6 +299,9 @@ class NewCodeBuilder {
|
|||||||
override fun visitParameter(parameter: JKParameter) {
|
override fun visitParameter(parameter: JKParameter) {
|
||||||
renderModifiersList(parameter)
|
renderModifiersList(parameter)
|
||||||
printer.printWithNoIndent(" ")
|
printer.printWithNoIndent(" ")
|
||||||
|
if (parameter.isVarArgs) {
|
||||||
|
printer.printWithNoIndent("vararg ")
|
||||||
|
}
|
||||||
parameter.name.accept(this)
|
parameter.name.accept(this)
|
||||||
if (parameter.type.present() && parameter.type.type !is JKContextType) {
|
if (parameter.type.present() && parameter.type.type !is JKContextType) {
|
||||||
printer.printWithNoIndent(":")
|
printer.printWithNoIndent(":")
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ class JKForLoopVariableImpl(
|
|||||||
class JKParameterImpl(
|
class JKParameterImpl(
|
||||||
type: JKTypeElement,
|
type: JKTypeElement,
|
||||||
name: JKNameIdentifier,
|
name: JKNameIdentifier,
|
||||||
|
override var isVarArgs: Boolean = false,
|
||||||
initializer: JKExpression = JKStubExpressionImpl()
|
initializer: JKExpression = JKStubExpressionImpl()
|
||||||
) : JKParameter, JKBranchElementBase(), PsiOwner by PsiOwnerImpl() {
|
) : JKParameter, JKBranchElementBase(), PsiOwner by PsiOwnerImpl() {
|
||||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitParameter(this, data)
|
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 {
|
interface JKStringLiteralExpression : JKLiteralExpression {
|
||||||
val text: String
|
val text: String
|
||||||
|
|||||||
Reference in New Issue
Block a user