New J2K: correctly create AST for Java call of Kotlin data class derived members

#KT-32604 fixed
This commit is contained in:
Ilya Kirillov
2019-07-15 17:55:43 +03:00
parent d29d7fb257
commit b7917978b8
6 changed files with 35 additions and 2 deletions
@@ -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 {
+9
View File
@@ -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())
}
}
+3
View File
@@ -0,0 +1,3 @@
data class Person(val name: String, val surname: String)
<caret>
+6
View File
@@ -0,0 +1,6 @@
public class Foo {
public static void main(String[] args) {
Person person = new Person("M", "S");
System.out.println(person.toString());
}
}
@@ -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");