New J2K: retrieve constructor call return type correctly
#KT-33431 fixed
This commit is contained in:
@@ -9,13 +9,12 @@ import com.intellij.psi.PsiMethod
|
|||||||
import com.intellij.psi.PsiReference
|
import com.intellij.psi.PsiReference
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
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.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.nj2k.JKSymbolProvider
|
import org.jetbrains.kotlin.nj2k.JKSymbolProvider
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKClass
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKMethod
|
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKType
|
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKClassTypeImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKClassTypeImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKNoTypeImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKNoTypeImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.toJK
|
|
||||||
import org.jetbrains.kotlin.psi.KtFunction
|
import org.jetbrains.kotlin.psi.KtFunction
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
@@ -49,7 +48,8 @@ class JKMultiverseMethodSymbol(
|
|||||||
override val parameterTypes: List<JKType>
|
override val parameterTypes: List<JKType>
|
||||||
get() = target.parameterList.parameters.map { it.type.toJK(symbolProvider) }
|
get() = target.parameterList.parameters.map { it.type.toJK(symbolProvider) }
|
||||||
override val returnType: JKType
|
override val returnType: JKType
|
||||||
get() = target.returnType!!.toJK(symbolProvider)
|
get() = target.returnType?.toJK(symbolProvider) // null for constructor call
|
||||||
|
?: symbolProvider.provideClassSymbol(target.getKotlinFqName()!!).asType(Nullability.NotNull)
|
||||||
|
|
||||||
override val fqName: String
|
override val fqName: String
|
||||||
get() {
|
get() {
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
public class Person {
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
public Person(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
// RUNTIME_WITH_FULL_JDK
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class TestLambda {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
List<String> names = Arrays.asList("A", "B");
|
||||||
|
List<Person> people = names.stream().map(Person::new).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import java.util.Arrays
|
||||||
|
import java.util.stream.Collectors
|
||||||
|
|
||||||
|
object TestLambda {
|
||||||
|
@JvmStatic
|
||||||
|
fun main(args: Array<String>) {
|
||||||
|
val names: List<String> = Arrays.asList("A", "B")
|
||||||
|
val people: List<Person?> = names.stream().map { name: String -> Person(name) }.collect(Collectors.toList())
|
||||||
|
}
|
||||||
|
}
|
||||||
+5
@@ -2443,6 +2443,11 @@ public class NewJavaToKotlinConverterSingleFileTestGenerated extends AbstractNew
|
|||||||
runTest("nj2k/testData/newJ2k/function/public.java");
|
runTest("nj2k/testData/newJ2k/function/public.java");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("referenceToConstructor.java")
|
||||||
|
public void testReferenceToConstructor() throws Exception {
|
||||||
|
runTest("nj2k/testData/newJ2k/function/referenceToConstructor.java");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("synchronizedMethod.java")
|
@TestMetadata("synchronizedMethod.java")
|
||||||
public void testSynchronizedMethod() throws Exception {
|
public void testSynchronizedMethod() throws Exception {
|
||||||
runTest("nj2k/testData/newJ2k/function/synchronizedMethod.java");
|
runTest("nj2k/testData/newJ2k/function/synchronizedMethod.java");
|
||||||
|
|||||||
Reference in New Issue
Block a user