Tests: do not report backend diagnostics if there's frontend error
In most affected tests, the backend diagnostic such as "conflicting JVM signature" or "accidental override" is directly caused by some already existing error reported by frontend, so it doesn't make sense to check backend diagnostics there. Tests where that was not the case were moved/copied to `testsWithJvmBackend`.
This commit is contained in:
committed by
Space Team
parent
dca6c21d7f
commit
55f9f74d5c
-6
@@ -44908,12 +44908,6 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/duplicateJvmSignature/jvmNames.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmNamesDuplicate.kt")
|
||||
public void testJvmNamesDuplicate() {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/duplicateJvmSignature/jvmNamesDuplicate.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmOverloads.kt")
|
||||
public void testJvmOverloads() {
|
||||
|
||||
-6
@@ -44908,12 +44908,6 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/duplicateJvmSignature/jvmNames.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmNamesDuplicate.kt")
|
||||
public void testJvmNamesDuplicate() {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/duplicateJvmSignature/jvmNamesDuplicate.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmOverloads.kt")
|
||||
public void testJvmOverloads() {
|
||||
|
||||
-6
@@ -42480,12 +42480,6 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/duplicateJvmSignature/jvmNames.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmNamesDuplicate.kt")
|
||||
public void testJvmNamesDuplicate() {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/duplicateJvmSignature/jvmNamesDuplicate.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmOverloads.kt")
|
||||
public void testJvmOverloads() {
|
||||
|
||||
-6
@@ -42618,12 +42618,6 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/duplicateJvmSignature/jvmNames.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmNamesDuplicate.kt")
|
||||
public void testJvmNamesDuplicate() {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/duplicateJvmSignature/jvmNamesDuplicate.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmOverloads.kt")
|
||||
public void testJvmOverloads() {
|
||||
|
||||
+50
@@ -294,6 +294,12 @@ public class FirLightTreeDiagnosticsTestWithJvmIrBackendGenerated extends Abstra
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/extensionProperties.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("genericFunctions.kt")
|
||||
public void testGenericFunctions() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/genericFunctions.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("genericType.kt")
|
||||
public void testGenericType() {
|
||||
@@ -306,6 +312,12 @@ public class FirLightTreeDiagnosticsTestWithJvmIrBackendGenerated extends Abstra
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/inheritFromTwoTraits.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inheritGenericMethodsWithDifferentSubstitution.kt")
|
||||
public void testInheritGenericMethodsWithDifferentSubstitution() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/inheritGenericMethodsWithDifferentSubstitution.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kotlinAndJavaCollections.kt")
|
||||
public void testKotlinAndJavaCollections() {
|
||||
@@ -517,6 +529,44 @@ public class FirLightTreeDiagnosticsTestWithJvmIrBackendGenerated extends Abstra
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class JavaInterop {
|
||||
@Test
|
||||
public void testAllFilesPresentInJavaInterop() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inheritFromJavaCollectionSubclassWithContainsOverload.kt")
|
||||
public void testInheritFromJavaCollectionSubclassWithContainsOverload() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop/inheritFromJavaCollectionSubclassWithContainsOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("supertypeDifferentParameterNullability.kt")
|
||||
public void testSupertypeDifferentParameterNullability() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop/supertypeDifferentParameterNullability.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/jvmName")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class JvmName {
|
||||
@Test
|
||||
public void testAllFilesPresentInJvmName() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/jvmName"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("conflictsWIthJvmNameInClass.kt")
|
||||
public void testConflictsWIthJvmNameInClass() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/jvmName/conflictsWIthJvmNameInClass.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
|
||||
+50
@@ -294,6 +294,12 @@ public class FirPsiDiagnosticsTestWithJvmIrBackendGenerated extends AbstractFirP
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/extensionProperties.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("genericFunctions.kt")
|
||||
public void testGenericFunctions() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/genericFunctions.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("genericType.kt")
|
||||
public void testGenericType() {
|
||||
@@ -306,6 +312,12 @@ public class FirPsiDiagnosticsTestWithJvmIrBackendGenerated extends AbstractFirP
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/inheritFromTwoTraits.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inheritGenericMethodsWithDifferentSubstitution.kt")
|
||||
public void testInheritGenericMethodsWithDifferentSubstitution() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/inheritGenericMethodsWithDifferentSubstitution.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kotlinAndJavaCollections.kt")
|
||||
public void testKotlinAndJavaCollections() {
|
||||
@@ -517,6 +529,44 @@ public class FirPsiDiagnosticsTestWithJvmIrBackendGenerated extends AbstractFirP
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class JavaInterop {
|
||||
@Test
|
||||
public void testAllFilesPresentInJavaInterop() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inheritFromJavaCollectionSubclassWithContainsOverload.kt")
|
||||
public void testInheritFromJavaCollectionSubclassWithContainsOverload() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop/inheritFromJavaCollectionSubclassWithContainsOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("supertypeDifferentParameterNullability.kt")
|
||||
public void testSupertypeDifferentParameterNullability() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop/supertypeDifferentParameterNullability.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/jvmName")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class JvmName {
|
||||
@Test
|
||||
public void testAllFilesPresentInJvmName() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/jvmName"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("conflictsWIthJvmNameInClass.kt")
|
||||
public void testConflictsWIthJvmNameInClass() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/jvmName/conflictsWIthJvmNameInClass.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
interface MyTrait: <!INTERFACE_WITH_SUPERCLASS, PLATFORM_CLASS_MAPPED_TO_KOTLIN!>Object<!> {
|
||||
override fun toString(): String
|
||||
public override fun finalize()
|
||||
<!CONFLICTING_INHERITED_JVM_DECLARATIONS!>public <!OVERRIDING_FINAL_MEMBER!>override<!> fun wait()<!>
|
||||
public <!OVERRIDING_FINAL_MEMBER!>override<!> fun wait()
|
||||
}
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ fun foo8(x: Any?) {
|
||||
val <!NAME_SHADOWING!>x<!>: (<!NON_PARENTHESIZED_ANNOTATIONS_ON_FUNCTIONAL_TYPES!>@Foo<!> () -> Unit)? = {}
|
||||
}
|
||||
|
||||
fun foo9(x: (<!NON_PARENTHESIZED_ANNOTATIONS_ON_FUNCTIONAL_TYPES!>@Foo<!> () -> Unit)?) = x as Iterable<(<!NON_PARENTHESIZED_ANNOTATIONS_ON_FUNCTIONAL_TYPES!>@Foo<!> () -> Unit?)?>?
|
||||
fun foo9(x: (<!NON_PARENTHESIZED_ANNOTATIONS_ON_FUNCTIONAL_TYPES!>@Foo<!> () -> Unit)?) = x as Iterable<(<!NON_PARENTHESIZED_ANNOTATIONS_ON_FUNCTIONAL_TYPES!>@<!DEBUG_INFO_MISSING_UNRESOLVED!>Foo<!><!> () -> Unit?)?>?
|
||||
|
||||
fun foo10(x: @[Foo] () -> Unit) = x as Iterable<@Foo() () -> Unit>?
|
||||
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
data class <!CONFLICTING_JVM_DECLARATIONS!>A(val x: Int, val y: String)<!> {
|
||||
data class A(val x: Int, val y: String) {
|
||||
<!CONFLICTING_OVERLOADS!>fun copy(x: Int, y: String)<!> = x
|
||||
<!CONFLICTING_OVERLOADS!>fun copy(x: Int, y: String)<!> = A(x, y)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
data class A(<!CONFLICTING_JVM_DECLARATIONS!>val x: Int<!>, val y: String) {
|
||||
data class A(val x: Int, val y: String) {
|
||||
<!CONFLICTING_OVERLOADS!>fun component1()<!> = 1
|
||||
<!CONFLICTING_OVERLOADS!>fun component2()<!> = 2
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -4,6 +4,6 @@ interface WithCopy<T> {
|
||||
fun copy(str: T): WithCopy<T>
|
||||
}
|
||||
|
||||
<!DATA_CLASS_OVERRIDE_DEFAULT_VALUES_ERROR!>data<!> class <!CONFLICTING_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS!>Test(val str: String)<!> : WithCopy<String> {
|
||||
<!DATA_CLASS_OVERRIDE_DEFAULT_VALUES_ERROR!>data<!> class Test(val str: String) : WithCopy<String> {
|
||||
<!CONFLICTING_OVERLOADS!>override fun copy(str: String)<!> = Test(str)
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -4,6 +4,6 @@ interface WithCopy<T> {
|
||||
fun copy(str: T): WithCopy<T>
|
||||
}
|
||||
|
||||
<!DATA_CLASS_OVERRIDE_DEFAULT_VALUES_ERROR!>data<!> class <!CONFLICTING_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS!>Test(val str: String)<!> : WithCopy<String> {
|
||||
<!DATA_CLASS_OVERRIDE_DEFAULT_VALUES_ERROR!>data<!> class Test(val str: String) : WithCopy<String> {
|
||||
<!CONFLICTING_OVERLOADS!>override fun copy(str: String = <!DEFAULT_VALUE_NOT_ALLOWED_IN_OVERRIDE!>this.str<!>)<!> = Test(str)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -37,4 +37,4 @@ final inline class D0(val x: Int)
|
||||
<!VALUE_CLASS_NOT_FINAL!>abstract<!> inline class D2(val x: Int)
|
||||
<!VALUE_CLASS_NOT_FINAL!>sealed<!> inline class D3(val x: Int)
|
||||
|
||||
<!INCOMPATIBLE_MODIFIERS!>inline<!> <!INCOMPATIBLE_MODIFIERS!>data<!> class <!CONFLICTING_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS!>D4(val x: String)<!>
|
||||
<!INCOMPATIBLE_MODIFIERS!>inline<!> <!INCOMPATIBLE_MODIFIERS!>data<!> class D4(val x: String)
|
||||
|
||||
+2
-2
@@ -9,8 +9,8 @@ abstract public class A implements java.util.Collection<String> {
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
abstract class <!CONFLICTING_JVM_DECLARATIONS!>KA<!> : A() {
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>override fun contains(x: String)<!> = false
|
||||
abstract class KA : A() {
|
||||
override fun contains(x: String) = false
|
||||
}
|
||||
|
||||
fun foo(a: A, ka: KA) {
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
// ISSUE: KT-66048
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// ^KT-66392
|
||||
|
||||
// FILE: Java1.java
|
||||
public class Java1 extends KotlinClass {
|
||||
@Override
|
||||
public String a() {
|
||||
return "2";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getB() {
|
||||
return "2";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getC() {
|
||||
return "2";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setC(String value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getD() {
|
||||
return "2";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setD(String value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getE() {
|
||||
return "2";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getF() {
|
||||
return "2";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
open class KotlinClass {
|
||||
open fun a() = "1"
|
||||
open val b = "1"
|
||||
open var c = "1"
|
||||
open var d: String = "1"
|
||||
open var e = "1"
|
||||
open var f: String = "1"
|
||||
}
|
||||
|
||||
class B : Java1() {
|
||||
override fun a(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.a()
|
||||
override val b: <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.b
|
||||
override var c: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.c
|
||||
override var d: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.d
|
||||
override var e: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.e
|
||||
override var f: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.f
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// ISSUE: KT-66048
|
||||
// IGNORE_REVERSED_RESOLVE
|
||||
// ^KT-66392
|
||||
@@ -58,6 +59,6 @@ class B : Java1() {
|
||||
override val b: <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.b
|
||||
override var c: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.c
|
||||
override var d: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.d
|
||||
<!ACCIDENTAL_OVERRIDE!>override var e: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!><!> = super.e
|
||||
<!ACCIDENTAL_OVERRIDE!>override var f: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!><!> = super.f
|
||||
override var e: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.e
|
||||
override var f: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = super.f
|
||||
}
|
||||
|
||||
-34
@@ -1,34 +0,0 @@
|
||||
<!CONFLICTING_OVERLOADS!>fun <T1> test1(x: List<T1>)<!> = x
|
||||
<!CONFLICTING_OVERLOADS!>fun <T2> test1(x: List<T2>)<!> = x
|
||||
|
||||
<!CONFLICTING_OVERLOADS!>fun <T1> List<T1>.test1a()<!> {}
|
||||
<!CONFLICTING_OVERLOADS!>fun <T2> List<T2>.test1a()<!> {}
|
||||
|
||||
fun <T> test2(x: List<T>) = x
|
||||
fun test2(x: List<String>) = x
|
||||
|
||||
fun <T> List<T>.test2a() {}
|
||||
fun List<String>.test2a() {}
|
||||
|
||||
fun <T : Any> test3(x: List<T>) = x
|
||||
fun test3(x: List<Any>) = x
|
||||
|
||||
fun <T : Any> List<T>.test3a() {}
|
||||
fun List<Any>.test3a() {}
|
||||
|
||||
fun <T> test4(x: Map<T, T>) = x
|
||||
fun <K, V> test4(x: Map<K, V>) = x
|
||||
|
||||
fun <T> Map<T, T>.test4a() {}
|
||||
fun <K, V> Map<K, V>.test4a() {}
|
||||
|
||||
class Inv<T>
|
||||
|
||||
<!CONFLICTING_OVERLOADS!>fun <T> test5(x: Inv<T>)<!> = x
|
||||
<!CONFLICTING_OVERLOADS!>fun <T> test5(x: Inv<out T>)<!> = x
|
||||
|
||||
fun <T> test6(x: Array<T>) = x
|
||||
fun test6(x: Array<String>) = x
|
||||
|
||||
fun <T> test7(x: Inv<T>) = x
|
||||
fun <T> Inv<T>.test7() {}
|
||||
+14
-13
@@ -1,26 +1,27 @@
|
||||
// FIR_IDENTICAL
|
||||
<!CONFLICTING_OVERLOADS!>fun <T1> test1(x: List<T1>)<!> = x
|
||||
<!CONFLICTING_OVERLOADS!>fun <T2> test1(x: List<T2>)<!> = x
|
||||
|
||||
<!CONFLICTING_OVERLOADS!>fun <T1> List<T1>.test1a()<!> {}
|
||||
<!CONFLICTING_OVERLOADS!>fun <T2> List<T2>.test1a()<!> {}
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> test2(x: List<T>)<!> = x
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun test2(x: List<String>)<!> = x
|
||||
fun <T> test2(x: List<T>) = x
|
||||
fun test2(x: List<String>) = x
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> List<T>.test2a()<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun List<String>.test2a()<!> {}
|
||||
fun <T> List<T>.test2a() {}
|
||||
fun List<String>.test2a() {}
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T : Any> test3(x: List<T>)<!> = x
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun test3(x: List<Any>)<!> = x
|
||||
fun <T : Any> test3(x: List<T>) = x
|
||||
fun test3(x: List<Any>) = x
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T : Any> List<T>.test3a()<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun List<Any>.test3a()<!> {}
|
||||
fun <T : Any> List<T>.test3a() {}
|
||||
fun List<Any>.test3a() {}
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> test4(x: Map<T, T>)<!> = x
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <K, V> test4(x: Map<K, V>)<!> = x
|
||||
fun <T> test4(x: Map<T, T>) = x
|
||||
fun <K, V> test4(x: Map<K, V>) = x
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> Map<T, T>.test4a()<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <K, V> Map<K, V>.test4a()<!> {}
|
||||
fun <T> Map<T, T>.test4a() {}
|
||||
fun <K, V> Map<K, V>.test4a() {}
|
||||
|
||||
class Inv<T>
|
||||
|
||||
@@ -31,4 +32,4 @@ fun <T> test6(x: Array<T>) = x
|
||||
fun test6(x: Array<String>) = x
|
||||
|
||||
fun <T> test7(x: Inv<T>) = x
|
||||
fun <T> Inv<T>.test7() {}
|
||||
fun <T> Inv<T>.test7() {}
|
||||
|
||||
@@ -49,12 +49,12 @@ abstract class MyAbstractClass1 : MyTrait<Int>, MyAbstractClass<String>() {
|
||||
abstract class MyLegalAbstractClass1 : MyTrait<Int>, MyAbstractClass<String>() {}
|
||||
|
||||
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class MyIllegalClass2<!><T>(t : T) : MyTrait<Int>, MyAbstractClass<Int>() {
|
||||
<!ACCIDENTAL_OVERRIDE!>fun foo(t: T)<!> = t
|
||||
<!ACCIDENTAL_OVERRIDE!>fun bar(t: T)<!> = t
|
||||
fun foo(t: T) = t
|
||||
fun bar(t: T) = t
|
||||
<!CONFLICTING_OVERLOADS!>val <<!TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER!>R<!>> pr : T<!> = t
|
||||
}
|
||||
abstract class MyLegalAbstractClass2<T>(t : T) : MyTrait<Int>, MyAbstractClass<Int>() {
|
||||
<!ACCIDENTAL_OVERRIDE!>fun foo(t: T)<!> = t
|
||||
<!ACCIDENTAL_OVERRIDE!>fun bar(t: T)<!> = t
|
||||
fun foo(t: T) = t
|
||||
fun bar(t: T) = t
|
||||
<!CONFLICTING_OVERLOADS!>val <<!TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER!>R<!>> pr : T<!> = t
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -17,4 +17,4 @@ public abstract class B implements A<String> {
|
||||
public class C extends B implements A<String> {}
|
||||
|
||||
// FILE: Main.kt
|
||||
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>X<!><!> : C() // false positive in K1, OK in K2
|
||||
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class X<!> : C() // false positive in K1, OK in K2
|
||||
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
// FILE: A.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public interface A {
|
||||
void foo(@Nullable String x);
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public interface B {
|
||||
void foo(@NotNull String x);
|
||||
}
|
||||
|
||||
// FILE: C.kt
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C1<!> : A, B {
|
||||
override fun foo(x: String) {}
|
||||
}
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C2<!> : A, B {
|
||||
override fun foo(x: String?) {}
|
||||
}
|
||||
|
||||
interface I : A, B
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C3<!> : I {
|
||||
override fun foo(x: String) {}
|
||||
}
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C4<!> : I {
|
||||
override fun foo(x: String?) {}
|
||||
}
|
||||
+7
-6
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: A.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
@@ -15,19 +16,19 @@ public interface B {
|
||||
// FILE: C.kt
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C1<!> : A, B {
|
||||
<!ACCIDENTAL_OVERRIDE!>override fun foo(x: String)<!> {}
|
||||
override fun foo(x: String) {}
|
||||
}
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C2<!> : A, B {
|
||||
<!ACCIDENTAL_OVERRIDE!>override fun foo(x: String?)<!> {}
|
||||
override fun foo(x: String?) {}
|
||||
}
|
||||
|
||||
interface <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>I<!> : A, B
|
||||
interface I : A, B
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C3<!> : I {
|
||||
<!ACCIDENTAL_OVERRIDE!>override fun foo(x: String)<!> {}
|
||||
override fun foo(x: String) {}
|
||||
}
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C4<!> : I {
|
||||
<!ACCIDENTAL_OVERRIDE!>override fun foo(x: String?)<!> {}
|
||||
}
|
||||
override fun foo(x: String?) {}
|
||||
}
|
||||
|
||||
Vendored
+3
-3
@@ -16,7 +16,7 @@ class GenericDerivedClass<T> : GenericBaseClass<T>(), GenericBaseInterface<T> {
|
||||
<!AMBIGUOUS_SUPER!>super<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>ambiguous<!>(x)
|
||||
}
|
||||
|
||||
class <!CONFLICTING_JVM_DECLARATIONS!>SpecializedDerivedClass<!> : GenericBaseClass<Int>(), GenericBaseInterface<String> {
|
||||
class SpecializedDerivedClass : GenericBaseClass<Int>(), GenericBaseInterface<String> {
|
||||
override fun foo(x: Int): Int = super.foo(x)
|
||||
override fun bar(x: String): String = super.bar(x)
|
||||
|
||||
@@ -26,12 +26,12 @@ class <!CONFLICTING_JVM_DECLARATIONS!>SpecializedDerivedClass<!> : GenericBaseCl
|
||||
<!AMBIGUOUS_SUPER!>super<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>ambiguous<!>(x)
|
||||
}
|
||||
|
||||
class <!CONFLICTING_JVM_DECLARATIONS!>MixedDerivedClass<!><T> : GenericBaseClass<Int>(), GenericBaseInterface<T> {
|
||||
class MixedDerivedClass<T> : GenericBaseClass<Int>(), GenericBaseInterface<T> {
|
||||
override fun foo(x: Int): Int = super.foo(x)
|
||||
override fun bar(x: T): T = super.bar(x)
|
||||
|
||||
override fun ambiguous(x: Int): Int =
|
||||
<!AMBIGUOUS_SUPER!>super<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>ambiguous<!>(x)
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>override fun ambiguous(x: T): T<!> =
|
||||
override fun ambiguous(x: T): T =
|
||||
<!AMBIGUOUS_SUPER!>super<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>ambiguous<!>(x)
|
||||
}
|
||||
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
// !SKIP_JAVAC
|
||||
// !LANGUAGE: +InlineClasses
|
||||
// ALLOW_KOTLIN_PACKAGE
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
package kotlin.jvm
|
||||
|
||||
annotation class JvmInline
|
||||
|
||||
@JvmInline
|
||||
value class A0(val x: Int)
|
||||
|
||||
@JvmInline
|
||||
<!ABSENCE_OF_PRIMARY_CONSTRUCTOR_FOR_VALUE_CLASS!>value<!> class A1
|
||||
@JvmInline
|
||||
value class A2<!INLINE_CLASS_CONSTRUCTOR_WRONG_PARAMETERS_SIZE!>()<!>
|
||||
@JvmInline
|
||||
value class A3(<!VALUE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER!>x: Int<!>)
|
||||
@JvmInline
|
||||
value class A4(<!VALUE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER!>var x: Int<!>)
|
||||
@JvmInline
|
||||
value class A5<!INLINE_CLASS_CONSTRUCTOR_WRONG_PARAMETERS_SIZE!>(val x: Int, val y: Int)<!>
|
||||
@JvmInline
|
||||
value class A6<!INLINE_CLASS_CONSTRUCTOR_WRONG_PARAMETERS_SIZE!>(x: Int, val y: Int)<!>
|
||||
@JvmInline
|
||||
value class A7(<!VALUE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER!>vararg val x: Int<!>)
|
||||
@JvmInline
|
||||
value class A8(<!VALUE_CLASS_CONSTRUCTOR_NOT_FINAL_READ_ONLY_PARAMETER!><!NON_FINAL_MEMBER_IN_FINAL_CLASS!>open<!> val x: Int<!>)
|
||||
@JvmInline
|
||||
value class A9(final val x: Int)
|
||||
|
||||
class B1 {
|
||||
companion object {
|
||||
@JvmInline
|
||||
value class C1(val x: Int)
|
||||
}
|
||||
|
||||
@JvmInline
|
||||
value class C2(val x: Int)
|
||||
}
|
||||
|
||||
object B2 {
|
||||
@JvmInline
|
||||
value class C3(val x: Int)
|
||||
}
|
||||
|
||||
@JvmInline
|
||||
final value class D0(val x: Int)
|
||||
<!VALUE_CLASS_NOT_FINAL!>open<!> <!VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION!>value<!> class D1(val x: Int)
|
||||
<!VALUE_CLASS_NOT_FINAL!>abstract<!> <!VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION!>value<!> class D2(val x: Int)
|
||||
<!VALUE_CLASS_NOT_FINAL!>sealed<!> <!VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION!>value<!> class D3(val x: Int)
|
||||
|
||||
<!INCOMPATIBLE_MODIFIERS, VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION!>value<!> <!INCOMPATIBLE_MODIFIERS!>data<!> class D4(val x: String)
|
||||
+2
-1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !SKIP_JAVAC
|
||||
// !LANGUAGE: +InlineClasses
|
||||
// ALLOW_KOTLIN_PACKAGE
|
||||
@@ -50,4 +51,4 @@ final value class D0(val x: Int)
|
||||
<!VALUE_CLASS_NOT_FINAL!>abstract<!> <!VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION!>value<!> class D2(val x: Int)
|
||||
<!VALUE_CLASS_NOT_FINAL!>sealed<!> <!VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION!>value<!> class D3(val x: Int)
|
||||
|
||||
<!INCOMPATIBLE_MODIFIERS, VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION!>value<!> <!INCOMPATIBLE_MODIFIERS!>data<!> class <!CONFLICTING_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS!>D4(val x: String)<!>
|
||||
<!INCOMPATIBLE_MODIFIERS, VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION!>value<!> <!INCOMPATIBLE_MODIFIERS!>data<!> class D4(val x: String)
|
||||
|
||||
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
// FIR_IDENTICAL
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> test2(x: List<T>) = x<!>
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun test2(x: List<String>) = x<!>
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> List<T>.test2a() {}<!>
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun List<String>.test2a() {}<!>
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T : Any> test3(x: List<T>) = x<!>
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun test3(x: List<Any>) = x<!>
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T : Any> List<T>.test3a() {}<!>
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun List<Any>.test3a() {}<!>
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> test4(x: Map<T, T>) = x<!>
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <K, V> test4(x: Map<K, V>) = x<!>
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> Map<T, T>.test4a() {}<!>
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <K, V> Map<K, V>.test4a() {}<!>
|
||||
|
||||
class Inv<T>
|
||||
|
||||
fun <T> test6(x: Array<T>) = x
|
||||
fun test6(x: Array<String>) = x
|
||||
|
||||
fun <T> test7(x: Inv<T>) = x
|
||||
fun <T> Inv<T>.test7() {}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
open class GenericBaseClass<T> {
|
||||
open fun foo(x: T): T = x
|
||||
open fun ambiguous(x: T): T = x
|
||||
}
|
||||
|
||||
interface GenericBaseInterface<T> {
|
||||
fun bar(x: T): T = x
|
||||
fun ambiguous(x: T): T = x
|
||||
}
|
||||
|
||||
class GenericDerivedClass<T> : GenericBaseClass<T>(), GenericBaseInterface<T> {
|
||||
override fun foo(x: T): T = super.foo(x)
|
||||
override fun bar(x: T): T = super.bar(x)
|
||||
override fun ambiguous(x: T): T = foo(x)
|
||||
}
|
||||
|
||||
<!CONFLICTING_INHERITED_JVM_DECLARATIONS!>class SpecializedDerivedClass : GenericBaseClass<Int>(), GenericBaseInterface<String> {
|
||||
override fun foo(x: Int): Int = super.foo(x)
|
||||
override fun bar(x: String): String = super.bar(x)
|
||||
override fun ambiguous(x: String): String = bar(x)
|
||||
override fun ambiguous(x: Int): Int = foo(x)
|
||||
}<!>
|
||||
|
||||
class MixedDerivedClass<T> : GenericBaseClass<Int>(), GenericBaseInterface<T> {
|
||||
override fun foo(x: Int): Int = super.foo(x)
|
||||
override fun bar(x: T): T = super.bar(x)
|
||||
override fun ambiguous(x: Int): Int = foo(x)
|
||||
<!ACCIDENTAL_OVERRIDE!>override fun ambiguous(x: T): T = bar(x)<!>
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
open class GenericBaseClass<T> {
|
||||
open fun foo(x: T): T = x
|
||||
open fun ambiguous(x: T): T = x
|
||||
}
|
||||
|
||||
interface GenericBaseInterface<T> {
|
||||
fun bar(x: T): T = x
|
||||
fun ambiguous(x: T): T = x
|
||||
}
|
||||
|
||||
class GenericDerivedClass<T> : GenericBaseClass<T>(), GenericBaseInterface<T> {
|
||||
override fun foo(x: T): T = super.foo(x)
|
||||
override fun bar(x: T): T = super.bar(x)
|
||||
override fun ambiguous(x: T): T = foo(x)
|
||||
}
|
||||
|
||||
<!CONFLICTING_INHERITED_JVM_DECLARATIONS!>class SpecializedDerivedClass : GenericBaseClass<Int>(), GenericBaseInterface<String> {
|
||||
override fun foo(x: Int): Int = super.foo(x)
|
||||
override fun bar(x: String): String = super.bar(x)
|
||||
override fun ambiguous(x: String): String = bar(x)
|
||||
override fun ambiguous(x: Int): Int = foo(x)
|
||||
}<!>
|
||||
|
||||
class MixedDerivedClass<T> : GenericBaseClass<Int>(), GenericBaseInterface<T> {
|
||||
override fun foo(x: Int): Int = super.foo(x)
|
||||
override fun bar(x: T): T = super.bar(x)
|
||||
override fun ambiguous(x: Int): Int = foo(x)
|
||||
override <!ACCIDENTAL_OVERRIDE!>fun ambiguous(x: T): T = bar(x)<!>
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -PARAMETER_NAME_CHANGED_ON_OVERRIDE
|
||||
// FILE: A.java
|
||||
abstract public class A implements java.util.Collection<String> {
|
||||
public boolean contains(Object x) {return false;}
|
||||
public boolean contains(String x) {return false;}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
abstract class KA : A() {
|
||||
override fun <!ACCIDENTAL_OVERRIDE_CLASH_BY_JVM_SIGNATURE!>contains<!>(x: String) = false
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -PARAMETER_NAME_CHANGED_ON_OVERRIDE
|
||||
// FILE: A.java
|
||||
abstract public class A implements java.util.Collection<String> {
|
||||
public boolean contains(Object x) {return false;}
|
||||
public boolean contains(String x) {return false;}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
abstract class KA : A() {
|
||||
override <!ACCIDENTAL_OVERRIDE!>fun contains(x: String) = false<!>
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: A.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public interface A {
|
||||
void foo(@Nullable String x);
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public interface B {
|
||||
void foo(@NotNull String x);
|
||||
}
|
||||
|
||||
// FILE: C.kt
|
||||
|
||||
<!CONFLICTING_INHERITED_JVM_DECLARATIONS!>interface I : A, B<!>
|
||||
+14
-13
@@ -1,15 +1,16 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -INAPPLICABLE_JVM_NAME
|
||||
// WITH_STDLIB
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>@JvmName("bar")
|
||||
fun foo(a: Any)<!> {}
|
||||
fun foo(a: Any) {}<!>
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun bar(a: Any)<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun bar(a: Any) {}<!>
|
||||
|
||||
class C {
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>@JvmName("foo1")
|
||||
fun foo(list: List<Int>)<!> {}
|
||||
fun foo(list: List<Int>) {}<!>
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>@JvmName("foo1")
|
||||
fun foo(list: List<String>)<!> {}
|
||||
fun foo(list: List<String>) {}<!>
|
||||
}
|
||||
|
||||
// Conflicts in inheritance.
|
||||
@@ -17,31 +18,31 @@ class C {
|
||||
// A1 -> B1 with accidental override
|
||||
|
||||
open class A1 {
|
||||
<!INAPPLICABLE_JVM_NAME!>@JvmName("bar")<!>
|
||||
@JvmName("bar")
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
class B1 : A1() {
|
||||
<!ACCIDENTAL_OVERRIDE!>fun bar()<!> {}
|
||||
<!ACCIDENTAL_OVERRIDE!>fun bar() {}<!>
|
||||
}
|
||||
|
||||
// A2 -> B2 with intended override and conflicting JVM declarations
|
||||
|
||||
open class A2 {
|
||||
<!INAPPLICABLE_JVM_NAME!>@JvmName("bar")<!>
|
||||
@JvmName("bar")
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
class <!CONFLICTING_JVM_DECLARATIONS!>B2<!> : A2() {
|
||||
class B2 : A2() {
|
||||
override fun foo() {}
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun bar()<!> {}
|
||||
<!ACCIDENTAL_OVERRIDE!>fun bar() {}<!>
|
||||
}
|
||||
|
||||
// A3 -> B3 -> C3 with accidental override
|
||||
|
||||
open class A3 {
|
||||
<!INAPPLICABLE_JVM_NAME!>@JvmName("bar")<!>
|
||||
@JvmName("bar")
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
@@ -49,5 +50,5 @@ open class B3: A3() {
|
||||
}
|
||||
|
||||
class C3: B3() {
|
||||
<!ACCIDENTAL_OVERRIDE!>fun bar()<!> {}
|
||||
}
|
||||
<!ACCIDENTAL_OVERRIDE!>fun bar() {}<!>
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -INAPPLICABLE_JVM_NAME
|
||||
// WITH_STDLIB
|
||||
@JvmName("bar")
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(a: Any) {}<!>
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun bar(a: Any) {}<!>
|
||||
|
||||
class C {
|
||||
@JvmName("foo1")
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(list: List<Int>) {}<!>
|
||||
|
||||
@JvmName("foo1")
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(list: List<String>) {}<!>
|
||||
}
|
||||
|
||||
// Conflicts in inheritance.
|
||||
|
||||
// A1 -> B1 with accidental override
|
||||
|
||||
open class A1 {
|
||||
@JvmName("bar")
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
class B1 : A1() {
|
||||
<!ACCIDENTAL_OVERRIDE!>fun bar() {}<!>
|
||||
}
|
||||
|
||||
// A2 -> B2 with intended override and conflicting JVM declarations
|
||||
|
||||
open class A2 {
|
||||
@JvmName("bar")
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
class B2 : A2() {
|
||||
override fun foo() {}
|
||||
|
||||
<!ACCIDENTAL_OVERRIDE!>fun bar() {}<!>
|
||||
}
|
||||
|
||||
// A3 -> B3 -> C3 with accidental override
|
||||
|
||||
open class A3 {
|
||||
@JvmName("bar")
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
open class B3: A3() {
|
||||
}
|
||||
|
||||
class C3: B3() {
|
||||
<!ACCIDENTAL_OVERRIDE!>fun bar() {}<!>
|
||||
}
|
||||
Vendored
-53
@@ -1,53 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
@JvmName("bar")
|
||||
fun foo(a: Any) {}
|
||||
|
||||
fun bar(a: Any) {}
|
||||
|
||||
class C {
|
||||
@JvmName("foo1")
|
||||
fun foo(list: List<Int>) {}
|
||||
|
||||
@JvmName("foo1")
|
||||
fun foo(list: List<String>) {}
|
||||
}
|
||||
|
||||
// Conflicts in inheritance.
|
||||
|
||||
// A1 -> B1 with accidental override
|
||||
|
||||
open class A1 {
|
||||
<!INAPPLICABLE_JVM_NAME!>@JvmName("bar")<!>
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
class B1 : A1() {
|
||||
fun bar() {}
|
||||
}
|
||||
|
||||
// A2 -> B2 with intended override and conflicting JVM declarations
|
||||
|
||||
open class A2 {
|
||||
<!INAPPLICABLE_JVM_NAME!>@JvmName("bar")<!>
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
class B2 : A2() {
|
||||
override fun foo() {}
|
||||
|
||||
fun bar() {}
|
||||
}
|
||||
|
||||
// A3 -> B3 -> C3 with accidental override
|
||||
|
||||
open class A3 {
|
||||
<!INAPPLICABLE_JVM_NAME!>@JvmName("bar")<!>
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
open class B3: A3() {
|
||||
}
|
||||
|
||||
class C3: B3() {
|
||||
fun bar() {}
|
||||
}
|
||||
-72
@@ -1,72 +0,0 @@
|
||||
package
|
||||
|
||||
public fun bar(/*0*/ a: kotlin.Any): kotlin.Unit
|
||||
@kotlin.jvm.JvmName(name = "bar") public fun foo(/*0*/ a: kotlin.Any): kotlin.Unit
|
||||
|
||||
public open class A1 {
|
||||
public constructor A1()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.jvm.JvmName(name = "bar") public open fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class A2 {
|
||||
public constructor A2()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.jvm.JvmName(name = "bar") public open fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class A3 {
|
||||
public constructor A3()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.jvm.JvmName(name = "bar") public open fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class B1 : A1 {
|
||||
public constructor B1()
|
||||
public final fun bar(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.jvm.JvmName(name = "bar") public open override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class B2 : A2 {
|
||||
public constructor B2()
|
||||
public final fun bar(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class B3 : A3 {
|
||||
public constructor B3()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.jvm.JvmName(name = "bar") public open override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C {
|
||||
public constructor C()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.jvm.JvmName(name = "foo1") public final fun foo(/*0*/ list: kotlin.collections.List<kotlin.Int>): kotlin.Unit
|
||||
@kotlin.jvm.JvmName(name = "foo1") public final fun foo(/*0*/ list: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C3 : B3 {
|
||||
public constructor C3()
|
||||
public final fun bar(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.jvm.JvmName(name = "bar") public open override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Generated
-6
@@ -44908,12 +44908,6 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/duplicateJvmSignature/jvmNames.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmNamesDuplicate.kt")
|
||||
public void testJvmNamesDuplicate() {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/duplicateJvmSignature/jvmNamesDuplicate.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jvmOverloads.kt")
|
||||
public void testJvmOverloads() {
|
||||
|
||||
+50
@@ -295,6 +295,12 @@ public class DiagnosticsTestWithJvmIrBackendGenerated extends AbstractDiagnostic
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/extensionProperties.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("genericFunctions.kt")
|
||||
public void testGenericFunctions() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/genericFunctions.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("genericType.kt")
|
||||
public void testGenericType() {
|
||||
@@ -307,6 +313,12 @@ public class DiagnosticsTestWithJvmIrBackendGenerated extends AbstractDiagnostic
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/inheritFromTwoTraits.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inheritGenericMethodsWithDifferentSubstitution.kt")
|
||||
public void testInheritGenericMethodsWithDifferentSubstitution() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/inheritGenericMethodsWithDifferentSubstitution.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kotlinAndJavaCollections.kt")
|
||||
public void testKotlinAndJavaCollections() {
|
||||
@@ -518,6 +530,44 @@ public class DiagnosticsTestWithJvmIrBackendGenerated extends AbstractDiagnostic
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class JavaInterop {
|
||||
@Test
|
||||
public void testAllFilesPresentInJavaInterop() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop"), Pattern.compile("^(.+)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inheritFromJavaCollectionSubclassWithContainsOverload.kt")
|
||||
public void testInheritFromJavaCollectionSubclassWithContainsOverload() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop/inheritFromJavaCollectionSubclassWithContainsOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("supertypeDifferentParameterNullability.kt")
|
||||
public void testSupertypeDifferentParameterNullability() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/javaInterop/supertypeDifferentParameterNullability.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/jvmName")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class JvmName {
|
||||
@Test
|
||||
public void testAllFilesPresentInJvmName() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/jvmName"), Pattern.compile("^(.+)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("conflictsWIthJvmNameInClass.kt")
|
||||
public void testConflictsWIthJvmNameInClass() {
|
||||
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/jvmName/conflictsWIthJvmNameInClass.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
|
||||
+6
-2
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.getJvmSignatureDiagnostics
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.diagnostics.Severity
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -44,9 +45,8 @@ class ClassicDiagnosticsHandler(testServices: TestServices) : ClassicFrontendAna
|
||||
|
||||
private val reporter = ClassicDiagnosticReporter(testServices)
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
override fun processModule(module: TestModule, info: ClassicFrontendOutputArtifact) {
|
||||
var allDiagnostics = info.analysisResult.bindingContext.diagnostics + computeJvmSignatureDiagnostics(info)
|
||||
var allDiagnostics = info.analysisResult.bindingContext.diagnostics.toList()
|
||||
if (AdditionalFilesDirectives.CHECK_TYPE in module.directives) {
|
||||
allDiagnostics = allDiagnostics.filter { it.factory.name != Errors.UNDERSCORE_USAGE_WITHOUT_BACKTICKS.name }
|
||||
}
|
||||
@@ -54,6 +54,10 @@ class ClassicDiagnosticsHandler(testServices: TestServices) : ClassicFrontendAna
|
||||
allDiagnostics = allDiagnostics.filter { it.factory.name != Errors.NEWER_VERSION_IN_SINCE_KOTLIN.name }
|
||||
}
|
||||
|
||||
if (allDiagnostics.none { it.severity == Severity.ERROR }) {
|
||||
allDiagnostics = allDiagnostics + computeJvmSignatureDiagnostics(info)
|
||||
}
|
||||
|
||||
val diagnosticsPerFile = allDiagnostics.groupBy { it.psiFile }
|
||||
val withNewInferenceModeEnabled = testServices.withNewInferenceModeEnabled()
|
||||
val configuration = reporter.createConfiguration(module)
|
||||
|
||||
Reference in New Issue
Block a user