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.*
|
||||||
import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl
|
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.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
|
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
|
||||||
import org.jetbrains.kotlin.idea.search.declarationsSearch.findDeepestSuperMethodsNoWrapping
|
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?
|
override val declaredIn: JKSymbol?
|
||||||
get() = target.containingClass?.let { symbolProvider.provideDirectSymbol(it) }
|
get() = target.containingClass?.let { symbolProvider.provideDirectSymbol(it) }
|
||||||
override val fqName: String
|
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 {
|
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");
|
runTest("nj2k/testData/copyPastePlainText/KT32603.txt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("KT32604.txt")
|
||||||
|
public void testKT32604() throws Exception {
|
||||||
|
runTest("nj2k/testData/copyPastePlainText/KT32604.txt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("MembersIntoClass.txt")
|
@TestMetadata("MembersIntoClass.txt")
|
||||||
public void testMembersIntoClass() throws Exception {
|
public void testMembersIntoClass() throws Exception {
|
||||||
runTest("nj2k/testData/copyPastePlainText/MembersIntoClass.txt");
|
runTest("nj2k/testData/copyPastePlainText/MembersIntoClass.txt");
|
||||||
|
|||||||
Reference in New Issue
Block a user