diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/tree/types.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/tree/types.kt index 14294d977d7..bd334eb9f98 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/tree/types.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/tree/types.kt @@ -310,14 +310,14 @@ inline fun T.addTypeParametersToRawProjectionType(typeParam ) as T } else this -fun JKClassSymbol.expectedTypeParametersCount(): Int { - val resolvedClass = target - return when (resolvedClass) { +fun JKClassSymbol.expectedTypeParametersCount(): Int = + when (val resolvedClass = target) { is PsiClass -> resolvedClass.typeParameters.size is KtClass -> resolvedClass.typeParameters.size + is JKClass -> resolvedClass.typeParameterList.typeParameters.size else -> 0 } -} + val primitiveTypes = listOf( diff --git a/nj2k/testData/newJ2k/constructors/genericIdentifier.kt b/nj2k/testData/newJ2k/constructors/genericIdentifier.kt index 396bdeff881..88731a06536 100644 --- a/nj2k/testData/newJ2k/constructors/genericIdentifier.kt +++ b/nj2k/testData/newJ2k/constructors/genericIdentifier.kt @@ -22,7 +22,7 @@ class Identifier { object User { fun main() { val i1: Identifier<*> = Identifier("name", false, true) - val i2 = Identifier("name", false) - val i3 = Identifier("name") + val i2: Identifier<*> = Identifier("name", false) + val i3: Identifier<*> = Identifier("name") } } \ No newline at end of file diff --git a/nj2k/testData/newJ2k/issues/kt-1048.kt b/nj2k/testData/newJ2k/issues/kt-1048.kt index 1db71aef218..e78244b8b17 100644 --- a/nj2k/testData/newJ2k/issues/kt-1048.kt +++ b/nj2k/testData/newJ2k/issues/kt-1048.kt @@ -1,5 +1,6 @@ // ERROR: The integer literal does not conform to the expected type CapturedType(*) // ERROR: The integer literal does not conform to the expected type CapturedType(*) +// ERROR: Type argument is not within its bounds: should be subtype of 'String?' internal class G(t: T?) class Java { internal fun test() { @@ -9,7 +10,7 @@ class Java { internal fun test2() { val m: HashMap<*, *> = HashMap() - val g = G("") + val g: G<*> = G("") val g2 = G("") } } \ No newline at end of file diff --git a/nj2k/testData/newJ2k/issues/kt-31818.java b/nj2k/testData/newJ2k/issues/kt-31818.java new file mode 100644 index 00000000000..48ab2f3608f --- /dev/null +++ b/nj2k/testData/newJ2k/issues/kt-31818.java @@ -0,0 +1,7 @@ +public class ClassC{} + +public class Test { + public static void main(String[] args) { + ClassC a; + } +} \ No newline at end of file diff --git a/nj2k/testData/newJ2k/issues/kt-31818.kt b/nj2k/testData/newJ2k/issues/kt-31818.kt new file mode 100644 index 00000000000..ed8340e6f99 --- /dev/null +++ b/nj2k/testData/newJ2k/issues/kt-31818.kt @@ -0,0 +1,8 @@ +class ClassC + +object Test { + @JvmStatic + fun main(args: Array) { + var a: ClassC<*> + } +} diff --git a/nj2k/testData/newJ2k/issues/kt-638.kt b/nj2k/testData/newJ2k/issues/kt-638.kt index 715e725407d..a479a6bfbc0 100644 --- a/nj2k/testData/newJ2k/issues/kt-638.kt +++ b/nj2k/testData/newJ2k/issues/kt-638.kt @@ -23,7 +23,7 @@ object User { @JvmStatic fun main(args: Array) { val i1: Identifier<*> = Identifier("name", false, true) - val i2 = Identifier("name", false) - val i3 = Identifier("name") + val i2: Identifier<*> = Identifier("name", false) + val i3: Identifier<*> = Identifier("name") } } \ No newline at end of file diff --git a/nj2k/testData/newJ2k/rawGenerics/kt-540-rawGenericClass.kt b/nj2k/testData/newJ2k/rawGenerics/kt-540-rawGenericClass.kt index 26fa34a6f18..7fa47cc0c58 100644 --- a/nj2k/testData/newJ2k/rawGenerics/kt-540-rawGenericClass.kt +++ b/nj2k/testData/newJ2k/rawGenerics/kt-540-rawGenericClass.kt @@ -8,8 +8,8 @@ internal class Collection(e: E?) { internal class Test { fun main() { - val raw1 = Collection(1) - val raw2 = Collection(1) - val raw3 = Collection("1") + val raw1: Collection<*> = Collection(1) + val raw2: Collection<*> = Collection(1) + val raw3: Collection<*> = Collection("1") } } \ No newline at end of file diff --git a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java index f2ac677a924..284812cbf85 100644 --- a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java +++ b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java @@ -2701,6 +2701,11 @@ public class NewJavaToKotlinConverterSingleFileTestGenerated extends AbstractNew runTest("nj2k/testData/newJ2k/issues/kt-19943.java"); } + @TestMetadata("kt-31818.java") + public void testKt_31818() throws Exception { + runTest("nj2k/testData/newJ2k/issues/kt-31818.java"); + } + @TestMetadata("kt-5294.java") public void testKt_5294() throws Exception { runTest("nj2k/testData/newJ2k/issues/kt-5294.java");