New J2K: correctly create AST for Java call of Kotlin data class derived members
#KT-32604 fixed
This commit is contained in:
@@ -335,7 +335,13 @@ class JavaToJKTreeBuilder constructor(
|
||||
}
|
||||
}
|
||||
|
||||
else -> TODO()
|
||||
else -> {
|
||||
JKJavaMethodCallExpressionImpl(
|
||||
JKMultiverseMethodSymbol(target, symbolProvider),
|
||||
arguments.toJK(),
|
||||
typeArguments
|
||||
).qualified(qualifier)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.nj2k.tree.impl
|
||||
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
|
||||
import org.jetbrains.kotlin.idea.search.declarationsSearch.findDeepestSuperMethodsNoWrapping
|
||||
@@ -172,7 +173,10 @@ class JKMultiverseMethodSymbol(override val target: PsiMethod, private val symbo
|
||||
override val declaredIn: JKSymbol?
|
||||
get() = target.containingClass?.let { symbolProvider.provideDirectSymbol(it) }
|
||||
override val fqName: String
|
||||
get() = target.getKotlinFqName()?.asString() ?: target.name
|
||||
get() {
|
||||
val kotlinFqName = target.getKotlinFqName()?.asString() ?: return name
|
||||
return if (target is KtLightMethod) "$kotlinFqName.$name" else kotlinFqName
|
||||
}
|
||||
}
|
||||
|
||||
class JKMultiverseFunctionSymbol(override val target: KtFunction, private val symbolProvider: JKSymbolProvider) : JKMethodSymbol {
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
data class Person(val name: String, val surname: String)
|
||||
|
||||
object Foo {
|
||||
@JvmStatic
|
||||
fun main(args: Array<String>) {
|
||||
val person = Person("M", "S")
|
||||
println(person.toString())
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
data class Person(val name: String, val surname: String)
|
||||
|
||||
<caret>
|
||||
@@ -0,0 +1,6 @@
|
||||
public class Foo {
|
||||
public static void main(String[] args) {
|
||||
Person person = new Person("M", "S");
|
||||
System.out.println(person.toString());
|
||||
}
|
||||
}
|
||||
Generated
+5
@@ -84,6 +84,11 @@ public class TextNewJavaToKotlinCopyPasteConversionTestGenerated extends Abstrac
|
||||
runTest("nj2k/testData/copyPastePlainText/KT32603.txt");
|
||||
}
|
||||
|
||||
@TestMetadata("KT32604.txt")
|
||||
public void testKT32604() throws Exception {
|
||||
runTest("nj2k/testData/copyPastePlainText/KT32604.txt");
|
||||
}
|
||||
|
||||
@TestMetadata("MembersIntoClass.txt")
|
||||
public void testMembersIntoClass() throws Exception {
|
||||
runTest("nj2k/testData/copyPastePlainText/MembersIntoClass.txt");
|
||||
|
||||
Reference in New Issue
Block a user