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:
Alexander Udalov
2024-03-11 22:22:03 +01:00
committed by Space Team
parent dca6c21d7f
commit 55f9f74d5c
38 changed files with 396 additions and 397 deletions
@@ -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() {
@@ -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() {
@@ -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() {
@@ -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() {
@@ -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")
@@ -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()
}
@@ -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>?
@@ -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
}
}
@@ -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)
}
}
@@ -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)
}
}
@@ -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)
@@ -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
}
@@ -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() {}
@@ -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() {}
+5 -5
View File
@@ -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
}
}
@@ -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
@@ -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?) {}
}
@@ -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?) {}
}
@@ -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)
}
@@ -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)
@@ -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)
@@ -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() {}
@@ -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)<!>
}
@@ -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)<!>
}
@@ -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
}
@@ -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<!>
}
@@ -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<!>
@@ -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() {}<!>
}
@@ -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() {}<!>
}
@@ -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() {}
}
@@ -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
}
@@ -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() {
@@ -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")
@@ -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)