// !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 : AbstractCollection() { override fun iterator(): MyIt = MyIt() override val size: Int get() = 1 inner class MyIt : MutableIterator { override fun next(): T { throw UnsupportedOperationException() } override fun hasNext(): Boolean { throw UnsupportedOperationException() } override fun remove() { throw UnsupportedOperationException() } } } fun commonSupertype(x: E, y: E): E = x fun foo() { var myIt = A().iterator() myIt = A().iterator() val csIt: Iterator = A().iterator() commonSupertype(A().iterator(), A().iterator()).checkType { _.MyIt>() } }