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 org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
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.tree.JKClass
|
||||
import org.jetbrains.kotlin.nj2k.tree.JKMethod
|
||||
import org.jetbrains.kotlin.nj2k.tree.JKType
|
||||
import org.jetbrains.kotlin.nj2k.tree.*
|
||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKClassTypeImpl
|
||||
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.utils.addToStdlib.safeAs
|
||||
|
||||
@@ -49,7 +48,8 @@ class JKMultiverseMethodSymbol(
|
||||
override val parameterTypes: List<JKType>
|
||||
get() = target.parameterList.parameters.map { it.type.toJK(symbolProvider) }
|
||||
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
|
||||
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");
|
||||
}
|
||||
|
||||
@TestMetadata("referenceToConstructor.java")
|
||||
public void testReferenceToConstructor() throws Exception {
|
||||
runTest("nj2k/testData/newJ2k/function/referenceToConstructor.java");
|
||||
}
|
||||
|
||||
@TestMetadata("synchronizedMethod.java")
|
||||
public void testSynchronizedMethod() throws Exception {
|
||||
runTest("nj2k/testData/newJ2k/function/synchronizedMethod.java");
|
||||
|
||||
Reference in New Issue
Block a user