| import java.* |
| import java.util.* |
| |
| fun f_plus(): Int { |
| var x: Int = 1 |
| x = x `kotlin::Int.plus(Int)`+ 1 |
| return x |
| } |
| |
| ~X~class X<~T~T> { |
| fun foo(a : `T`T) : `X`X<`T`T>{} |
| ~plus~fun plus(t : `T`T) : Int {} |
| ~minus~fun minus(t : String) : Int {} |
| ~times~fun times(t : String) : Int {} |
| ~div~fun div(t : String) : Int {} |
| ~mod~fun mod(t : String) : Int {} |
| ~rangeTo~fun rangeTo(t : String) : Int {} |
| ~==~fun equals(a : Any?) : Boolean {} |
| ~contains~fun contains(a : Any?) : Boolean {} |
| } |
| |
| ~t~fun <~t.T~T> t(~t.t~t : `t.T`T) : `t.T`T { |
| `t`t<Int>(1)`:kotlin::Int` |
| `t`t<`t.T`T>(`t.t`t)`:t.T` |
| `X`X<`t.T`T>() |
| 1 `kotlin::Int.plus(Int)`+ 1 |
| 1 `kotlin::Int.plus(Int)`+= 1 |
| X<String>() `plus`+ "1" |
| X<String>() `plus`plus "sadfas" |
| X<String>().`plus`plus("") |
| val x = X<String>() |
| x `minus`- "" |
| x `times`* "" |
| x `div`/ "" |
| x `mod`% "" |
| x `rangeTo`.. "" |
| x `==`== "" |
| x `==`!= 1 |
| 1 `contains`in x |
| 1 `contains`!in x |
| } |
| |
| open ~Foo~class Foo { |
| ~set1~fun set(i : Int, val1 : String) {} |
| ~get1~fun get(i : Int) : Int {} |
| ~get2~fun get(i : Int, j : Int) : String {} |
| ~get3~fun get(i : Object) : Any {return i } |
| ~+=~fun plusAssign(a : Any?) : Unit {} |
| } |
| |
| ~Bar~class Bar : Foo { |
| ~not~fun not() : String {} |
| ~inc~fun inc() : Bar |
| ~dec~fun dec() : Bar |
| ~-~fun minus() : Bar |
| ~+~fun plus() : Bar |
| } |
| |
| fun <T> tt(t : T) : T { |
| val x : ArrayList<Int> = 0 |
| x`java::java.util.ArrayList.get()`[1] |
| val foo = `Bar`Bar() |
| foo`get2`[null, 1] |
| foo`get2`[1, 1] |
| foo`get1`[1] |
| foo`set1`[1] = "" |
| foo`set1`[1, 2] = "" |
| x`java::java.util.ArrayList.set()`[1] = null |
| (x`java::java.util.ArrayList.set()`[1]) = null |
| x`java::java.util.ArrayList.set()`[null] = null |
| (x`java::java.util.ArrayList.set()`[null, 2]) = null |
| val y = Bar() |
| y`inc`++ |
| `inc`++y |
| `dec`--y |
| y`dec`-- |
| y `+=`+= 1 |
| 1 `kotlin::Int.compareTo(Double)`> 2.0 |
| 1 `kotlin::Int.compareTo(Double)`< 2.0 |
| 1 `kotlin::Int.compareTo(Double)`>= 2.0 |
| 1 `kotlin::Int.compareTo(Double)`<= 2.0 |
| } |
| |
| |
| class UnitIncDec() { |
| ~uinc~fun inc() : Unit |
| ~udec~fun dec() : Unit |
| } |
| |
| fun testUnitIncDec() { |
| var x = UnitIncDec() |
| x`uinc`++ |
| x`udec`-- |
| } |