For-loop now cannot use extension iterator on a nullable #KT-7428 Fixed
This commit is contained in:
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
// See also KT-7428
|
||||
class Container<K>(val k: K)
|
||||
// iterator() must be an extension, otherwise code will not compile
|
||||
operator fun <K> Container<K>.iterator(): Iterator<K> = null!!
|
||||
|
||||
fun test() {
|
||||
val container: Container<String>? = null
|
||||
// Error
|
||||
container<!UNSAFE_CALL!>.<!>iterator()
|
||||
// for extension iterator, this code compiles, but should not
|
||||
for (s in <!ITERATOR_MISSING!>container<!>) {}
|
||||
}
|
||||
class OtherContainer<K>(val k: K) {
|
||||
operator fun iterator(): Iterator<K> = null!!
|
||||
}
|
||||
|
||||
fun test2() {
|
||||
val other: OtherContainer<String>? = null
|
||||
// Error
|
||||
for (s in <!ITERATOR_MISSING!>other<!>) {}
|
||||
}
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
package
|
||||
|
||||
public fun test(): kotlin.Unit
|
||||
public fun test2(): kotlin.Unit
|
||||
public operator fun </*0*/ K> Container<K>.iterator(): kotlin.collections.Iterator<K>
|
||||
|
||||
public final class Container</*0*/ K> {
|
||||
public constructor Container</*0*/ K>(/*0*/ k: K)
|
||||
public final val k: K
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class OtherContainer</*0*/ K> {
|
||||
public constructor OtherContainer</*0*/ K>(/*0*/ k: K)
|
||||
public final val k: K
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public final operator fun iterator(): kotlin.collections.Iterator<K>
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user