New J2K: Correctly resolve references to default constructor
This commit is contained in:
committed by
Ilya Kirillov
parent
0e2dac0899
commit
c53f56629e
@@ -161,8 +161,17 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
|||||||
return JKJavaNewEmptyArrayImpl(dimensions.map { it?.toJK() })
|
return JKJavaNewEmptyArrayImpl(dimensions.map { it?.toJK() })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
val constructedClass = classOrAnonymousClassReference?.resolve()
|
||||||
|
val constructor = constructorFakeReference.resolve()
|
||||||
|
if (constructor == null && constructedClass != null) {
|
||||||
|
return JKJavaDefaultNewExpressionImpl(
|
||||||
|
symbolProvider.provideSymbol(constructedClass) as JKClassSymbol
|
||||||
|
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return JKJavaNewExpressionImpl(
|
return JKJavaNewExpressionImpl(
|
||||||
symbolProvider.provideSymbol(constructorFakeReference.resolve()!!) as JKMethodSymbol,
|
symbolProvider.provideSymbol(constructor!!) as JKMethodSymbol,
|
||||||
argumentList.toJK()
|
argumentList.toJK()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,6 +101,10 @@ class JKJavaNewExpressionImpl(
|
|||||||
override var arguments by child(arguments)
|
override var arguments by child(arguments)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class JKJavaDefaultNewExpressionImpl(
|
||||||
|
override val classSymbol: JKClassSymbol
|
||||||
|
) : JKJavaDefaultNewExpression, JKElementBase()
|
||||||
|
|
||||||
class JKJavaNewEmptyArrayImpl(override var initializer: List<JKLiteralExpression?>) : JKJavaNewEmptyArray, JKElementBase() {
|
class JKJavaNewEmptyArrayImpl(override var initializer: List<JKLiteralExpression?>) : JKJavaNewEmptyArray, JKElementBase() {
|
||||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaNewEmptyArray(this, data)
|
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaNewEmptyArray(this, data)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.j2k.tree
|
package org.jetbrains.kotlin.j2k.tree
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.j2k.tree.impl.JKClassSymbol
|
||||||
import org.jetbrains.kotlin.j2k.tree.impl.JKMethodSymbol
|
import org.jetbrains.kotlin.j2k.tree.impl.JKMethodSymbol
|
||||||
|
|
||||||
interface JKJavaField : JKField, JKBranchElement
|
interface JKJavaField : JKField, JKBranchElement
|
||||||
@@ -38,6 +39,10 @@ interface JKJavaNewExpression : JKExpression {
|
|||||||
val arguments: JKExpressionList
|
val arguments: JKExpressionList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface JKJavaDefaultNewExpression : JKExpression {
|
||||||
|
val classSymbol: JKClassSymbol
|
||||||
|
}
|
||||||
|
|
||||||
interface JKJavaAccessModifier : JKAccessModifier {
|
interface JKJavaAccessModifier : JKAccessModifier {
|
||||||
val type: AccessModifierType
|
val type: AccessModifierType
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user