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
@@ -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)