// ISSUE: KT-65881, KT-65760 class I: Iterator { override fun hasNext(): Boolean = false override fun next(): Int = 0 } object A { object plusAssign { operator fun invoke(x: Int): A = A } object minusAssign { operator fun invoke(x: Int): A = A } object timesAssign { operator fun invoke(x: Int): A = A } object divAssign { operator fun invoke(x: Int): A = A } object remAssign { operator fun invoke(x: Int): A = A } object unaryPlus { operator fun invoke(): A = A } object unaryMinus { operator fun invoke(): A = A } object not { operator fun invoke(): A = A } object plus { operator fun invoke(x: Int): A = A } object minus { operator fun invoke(x: Int): A = A } object times { operator fun invoke(x: Int): A = A } object div { operator fun invoke(x: Int): A = A } object rem { operator fun invoke(x: Int): A = A } object get { operator fun invoke(x: Int): A = A } object set { operator fun invoke(x: Int, y: Int): A = A } object contains { operator fun invoke(x: Int): A = A } object invoke { operator fun invoke(): A = A } object rangeTo { operator fun invoke(x: Int): A = A } object rangeUntil { operator fun invoke(x: Int): A = A } object compareTo { operator fun invoke(x: Int): A = A } object iterator { operator fun invoke(): I = I() } object component1 { operator fun invoke(): A = A } object component2 { operator fun invoke(): A = A } } fun usePlusAssign() { A += 1 } fun useMinusAssign() { A -= 1 } fun useTimesAssign() { A *= 1 } fun useDivAssign() { A /= 1 } fun useRemAssign() { A %= 1 } val useUnaryPlus = +A val useUnaryMinus = -A val useNot = !A val usePlus = A + 1 val useMinus = A - 1 val useTimes = A * 1 val useDiv = A / 1 val useRem = A % 1 val useGet = A[1] fun useSet() { A[1] = 3 } val useContains = 1 in A val useNotContains = 1 !in A val useInvoke = A() val useRangeTo = A .. 3 val useRangeUntil = A ..< 3 val useCompareTo = A > 2 fun useIterator() { for (x in A) { } } fun useComponentN() { val (x, y) = A } object D { object getValue { operator fun invoke(thisRef: Any?, property: Any?): Int = 0 } object setValue { operator fun invoke(thisRef: Any?, property: Any?, newValue: Int) { } } } class X { val component1 = { "UwU" } } operator fun X.component1(): String = "Not UwU" fun useDelegate() { val m by D var n by D } fun resolveToExtension() { val (uwu) = X() // KT-65760 }