Files
kotlin-fork/js/js.translator/testData/operatorOverloading/cases/overloadPlusAssignViaPlusExtensionFunction.kt
T

17 lines
367 B
Kotlin
Vendored

package foo
open class Foo<out T>(open val value: T)
open class MutableFoo<T>(override var value: T): Foo<T>(value)
operator fun <T> Foo<T>.plus(x: T): Foo<T> = Foo(x)
// overloading:
operator fun <T> MutableFoo<T>.plus(x: T): MutableFoo<T> = MutableFoo(x)
fun box(): Boolean {
var f = MutableFoo(1)
f += 2
return (f is MutableFoo && f.value == 2)
}