bcc8802014
Expression will be checked against expected type later. Theoretically, this is not very good, but it aligns with the old inference, plus it helps avoiding multiple type mismatch diagnostics.
38 lines
1.0 KiB
Kotlin
Vendored
38 lines
1.0 KiB
Kotlin
Vendored
// !WITH_NEW_INFERENCE
|
|
// !CHECK_TYPE
|
|
// !DIAGNOSTICS: -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_VARIABLE
|
|
// JAVAC_EXPECTED_FILE
|
|
import java.util.*
|
|
|
|
class A<T> : AbstractCollection<T>() {
|
|
override fun iterator(): MyIt = MyIt()
|
|
|
|
override val size: Int
|
|
get() = 1
|
|
|
|
inner class MyIt : MutableIterator<T> {
|
|
override fun next(): T {
|
|
throw UnsupportedOperationException()
|
|
}
|
|
|
|
override fun hasNext(): Boolean {
|
|
throw UnsupportedOperationException()
|
|
}
|
|
|
|
override fun remove() {
|
|
throw UnsupportedOperationException()
|
|
}
|
|
}
|
|
}
|
|
|
|
fun <E> commonSupertype(x: E, y: E): E = x
|
|
|
|
fun foo() {
|
|
var myIt = A<String>().iterator()
|
|
myIt = <!TYPE_MISMATCH!>A<Int>().iterator()<!>
|
|
|
|
val csIt: Iterator<CharSequence> = A<String>().iterator()
|
|
|
|
commonSupertype(A<String>().iterator(), A<Int>().iterator()).checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><A<out Any>.MyIt>() }
|
|
}
|