diff --git a/idea/testData/copyPaste/conversion/AddKClassImport.expected.kt b/idea/testData/copyPaste/conversion/AddKClassImport.expected.kt index bd7fbd1fc81..29ad36b1693 100644 --- a/idea/testData/copyPaste/conversion/AddKClassImport.expected.kt +++ b/idea/testData/copyPaste/conversion/AddKClassImport.expected.kt @@ -2,4 +2,4 @@ package to import kotlin.reflect.KClass -internal annotation class Ann(val value: KClass) \ No newline at end of file +internal annotation class Ann(val value: KClass<*>) \ No newline at end of file diff --git a/idea/testData/copyPaste/conversion/RawTypeRef.expected.kt b/idea/testData/copyPaste/conversion/RawTypeRef.expected.kt index 203dd6d19a3..f773bb36b80 100644 --- a/idea/testData/copyPaste/conversion/RawTypeRef.expected.kt +++ b/idea/testData/copyPaste/conversion/RawTypeRef.expected.kt @@ -1 +1 @@ -class B : X \ No newline at end of file +class B : X<*> \ No newline at end of file diff --git a/j2k/src/org/jetbrains/kotlin/j2k/TypeVisitor.kt b/j2k/src/org/jetbrains/kotlin/j2k/TypeVisitor.kt index 3097c958710..39f631e3b64 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/TypeVisitor.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/TypeVisitor.kt @@ -105,10 +105,7 @@ class TypeVisitor( if (classType is PsiClassReferenceType) { val targetClass = classType.reference.resolve() as? PsiClass if (targetClass != null) { - return targetClass.typeParameters.map { - val superType = it.superTypes.first() // there must be at least one super type always - typeConverter.convertType(superType, Nullability.Default, mutability, inAnnotationType).assignNoPrototype() - } + return targetClass.typeParameters.map { StarProjectionType().assignNoPrototype() } } } return listOf() diff --git a/j2k/testData/fileOrElement/assignmentExpression/nullability-settings.kt b/j2k/testData/fileOrElement/assignmentExpression/nullability-settings.kt index 756f549bd86..8b1c1eb4517 100644 --- a/j2k/testData/fileOrElement/assignmentExpression/nullability-settings.kt +++ b/j2k/testData/fileOrElement/assignmentExpression/nullability-settings.kt @@ -3,8 +3,8 @@ import java.util.HashSet internal class Foo { - fun foo(o: HashSet?) { - val o2: HashSet? = o + fun foo(o: HashSet<*>?) { + val o2: HashSet<*>? = o var foo: Int = 0 foo = o2!!.size } diff --git a/j2k/testData/fileOrElement/assignmentExpression/nullability.kt b/j2k/testData/fileOrElement/assignmentExpression/nullability.kt index 0510c450899..013c2ca9b26 100644 --- a/j2k/testData/fileOrElement/assignmentExpression/nullability.kt +++ b/j2k/testData/fileOrElement/assignmentExpression/nullability.kt @@ -1,7 +1,7 @@ import java.util.HashSet internal class Foo { - fun foo(o: HashSet) { + fun foo(o: HashSet<*>) { val o2 = o var foo = 0 foo = o2.size diff --git a/j2k/testData/fileOrElement/isOperator/rawType.java b/j2k/testData/fileOrElement/isOperator/rawType.java new file mode 100644 index 00000000000..b1c995f2297 --- /dev/null +++ b/j2k/testData/fileOrElement/isOperator/rawType.java @@ -0,0 +1,8 @@ +import java.util.Collection; +import java.util.List; + +class C { + boolean bar(Object o, Collection collection) { + return o instanceof Collection && collection instanceof List; + } +} diff --git a/j2k/testData/fileOrElement/isOperator/rawType.kt b/j2k/testData/fileOrElement/isOperator/rawType.kt new file mode 100644 index 00000000000..a76f7d22bb1 --- /dev/null +++ b/j2k/testData/fileOrElement/isOperator/rawType.kt @@ -0,0 +1,5 @@ +internal class C { + fun bar(o: Any, collection: Collection): Boolean { + return o is Collection<*> && collection is List<*> + } +} diff --git a/j2k/testData/fileOrElement/rawGenerics/cycle.java b/j2k/testData/fileOrElement/rawGenerics/cycle.java.todo similarity index 64% rename from j2k/testData/fileOrElement/rawGenerics/cycle.java rename to j2k/testData/fileOrElement/rawGenerics/cycle.java.todo index dec86461f9c..465ae62dd12 100644 --- a/j2k/testData/fileOrElement/rawGenerics/cycle.java +++ b/j2k/testData/fileOrElement/rawGenerics/cycle.java.todo @@ -1,3 +1,4 @@ +//TODO: uncomment this test when KT-12133 fixed class JavaClass1 { } diff --git a/j2k/testData/fileOrElement/typeParameters/rawTypeCast.kt b/j2k/testData/fileOrElement/typeParameters/rawTypeCast.kt index 8bacb776d36..3062919bdf9 100644 --- a/j2k/testData/fileOrElement/typeParameters/rawTypeCast.kt +++ b/j2k/testData/fileOrElement/typeParameters/rawTypeCast.kt @@ -1,9 +1,9 @@ -// ERROR: Type inference failed. Expected type mismatch: inferred type is HashMap but Map was expected +// ERROR: Type inference failed. Expected type mismatch: inferred type is HashMap but Map was expected import java.util.* internal object A { fun foo(): Map { val props = Properties() - return HashMap(props as Map) + return HashMap(props as Map<*, *>) } } \ No newline at end of file diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java index 2c137769a76..31f2ee9dcb6 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java +++ b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java @@ -2698,6 +2698,12 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("rawType.java") + public void testRawType() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/isOperator/rawType.java"); + doTest(fileName); + } + @TestMetadata("simpleReference.java") public void testSimpleReference() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/isOperator/simpleReference.java"); @@ -4078,12 +4084,6 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("j2k/testData/fileOrElement/rawGenerics"), Pattern.compile("^(.+)\\.java$"), true); } - @TestMetadata("cycle.java") - public void testCycle() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/rawGenerics/cycle.java"); - doTest(fileName); - } - @TestMetadata("kt-540.java") public void testKt_540() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/rawGenerics/kt-540.java"); diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java index f0028db8905..6de10f5b4b2 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java +++ b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java @@ -2698,6 +2698,12 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("rawType.java") + public void testRawType() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/isOperator/rawType.java"); + doTest(fileName); + } + @TestMetadata("simpleReference.java") public void testSimpleReference() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/isOperator/simpleReference.java"); @@ -4078,12 +4084,6 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("j2k/testData/fileOrElement/rawGenerics"), Pattern.compile("^(.+)\\.java$"), true); } - @TestMetadata("cycle.java") - public void testCycle() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/rawGenerics/cycle.java"); - doTest(fileName); - } - @TestMetadata("kt-540.java") public void testKt_540() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/rawGenerics/kt-540.java");