diff --git a/compiler/testData/diagnostics/tests/operatorsOverloading/PropertyInvoke.fir.kt b/compiler/testData/diagnostics/tests/operatorsOverloading/PropertyInvoke.fir.kt index 8f6225639b1..dbfade0c8a9 100644 --- a/compiler/testData/diagnostics/tests/operatorsOverloading/PropertyInvoke.fir.kt +++ b/compiler/testData/diagnostics/tests/operatorsOverloading/PropertyInvoke.fir.kt @@ -32,7 +32,11 @@ fun useRemAssign() { a %= 1 } // operators over values -class E { } +class E: Iterator { + override fun hasNext(): Boolean = false + override fun next(): Int = 0 +} + val e = E() val E.unaryPlus: I get() = I() @@ -80,3 +84,26 @@ val useRangeUntil = e ..< 3 val E.compareTo: I get() = I() val useCompareTo = e > 2 + +val E.iterator: I get() = I() +fun useIterator() { + for (x in e) { } +} + +class P { } + +val A.getValue: P get() = P() +val A.setValue: P get() = P() + +operator fun P.invoke(thisRef: Any?, property: Any?): Int = 0 +operator fun P.invoke(thisRef: Any?, property: Any?, newValue: Int) { } +fun useDelegate() { + val m by a + var n by a +} + +val E.component1: I get() = I() +val E.component2: I get() = I() +fun useComponentN() { + val (x, y) = e +} diff --git a/compiler/testData/diagnostics/tests/operatorsOverloading/PropertyInvoke.kt b/compiler/testData/diagnostics/tests/operatorsOverloading/PropertyInvoke.kt index ee38390b33d..d944c94b14e 100644 --- a/compiler/testData/diagnostics/tests/operatorsOverloading/PropertyInvoke.kt +++ b/compiler/testData/diagnostics/tests/operatorsOverloading/PropertyInvoke.kt @@ -32,7 +32,11 @@ fun useRemAssign() { a { + override fun hasNext(): Boolean = false + override fun next(): Int = 0 +} + val e = E() val E.unaryPlus: I get() = I() @@ -80,3 +84,26 @@ val useRangeUntil = e ..< 3 val E.compareTo: I get() = I() val useCompareTo = e > 2 + +val E.iterator: I get() = I() +fun useIterator() { + for (x in e) { } +} + +class P { } + +val A.getValue: P get() = P() +val A.setValue: P get() = P() + +operator fun P.invoke(thisRef: Any?, property: Any?): Int = 0 +operator fun P.invoke(thisRef: Any?, property: Any?, newValue: Int) { } +fun useDelegate() { + val m by a + var n by a +} + +val E.component1: I get() = I() +val E.component2: I get() = I() +fun useComponentN() { + val (x, y) = e +}