Files
kotlin-fork/compiler/testData/diagnostics/testsWithStdLib/purelyImplementedCollection/customClassMutableCollection.fir.kt
T
Kirill Rakhman 9ec0210c04 [FIR] Support enhancing intersection overrides
When a type annotated with @PurelyImplements (explicitly or implicitly)
inherited some methods from a java supertype and the purely implemented
Kotlin supertype, it was inconsistent which of the signatures the
intersection override would have (with or without flexible types).
This commit adds support for the enhancement of intersection overrides.
If one of the overridden methods has non-flexible types, the enhanced
method will have non-flexible types.
This fixes some false negative nullability type mismatches.

#KT-59921 Fixed
2024-01-31 11:16:50 +00:00

33 lines
646 B
Kotlin
Vendored

// !DIAGNOSTICS: -UNUSED_VARIABLE
// JAVAC_EXPECTED_FILE
import java.util.*;
// FILE: A.java
@kotlin.jvm.PurelyImplements("kotlin.collections.MutableCollection")
class A<T> extends AbstractCollection<T> {
@Override
public Iterator<T> iterator() {
return null;
}
@Override
public int size() {
return 0;
}
}
// FILE: b.kt
fun bar(): String? = null
fun foo() {
var x = A<String>()
x.add(<!NULL_FOR_NONNULL_TYPE!>null<!>)
x.add(<!ARGUMENT_TYPE_MISMATCH!>bar()<!>)
x.add("")
val b1: Collection<String?> = x
val b2: MutableCollection<String?> = <!INITIALIZER_TYPE_MISMATCH!>x<!>
}