e6f4d6e6fa
^KT-65406
104 lines
1.7 KiB
Kotlin
Vendored
104 lines
1.7 KiB
Kotlin
Vendored
open class BaseClass {
|
|
constructor() /* primary */ {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
val <T : Any?> T.fromClass: T
|
|
get(): T {
|
|
return <this>
|
|
}
|
|
|
|
}
|
|
|
|
interface I<G : Any?> {
|
|
fun <T : Any?> T.fromInterface(): T {
|
|
return <this>
|
|
}
|
|
|
|
fun genericFromSuper(g: G): G {
|
|
return g
|
|
}
|
|
|
|
}
|
|
|
|
object C : BaseClass, I<String> {
|
|
var p: Int
|
|
field = 4
|
|
get
|
|
set
|
|
|
|
private constructor() /* primary */ {
|
|
super/*BaseClass*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
fun Boolean.f(): Int {
|
|
return 3
|
|
}
|
|
|
|
fun f(s: Int): Int {
|
|
return 1
|
|
}
|
|
|
|
fun f(s: String): Int {
|
|
return 2
|
|
}
|
|
|
|
fun <T : Any?> g1(t: T): T {
|
|
return t
|
|
}
|
|
|
|
val Int.ext: Int
|
|
get(): Int {
|
|
return 6
|
|
}
|
|
|
|
val <T : Any?> T.g2: T
|
|
get(): T {
|
|
return <this>
|
|
}
|
|
|
|
}
|
|
|
|
fun box(): String {
|
|
when {
|
|
EQEQ(arg0 = C.f(s = 1), arg1 = 1).not() -> return "1"
|
|
}
|
|
when {
|
|
EQEQ(arg0 = C.f(s = "s"), arg1 = 2).not() -> return "2"
|
|
}
|
|
when {
|
|
EQEQ(arg0 = (C, true).f(), arg1 = 3).not() -> return "3"
|
|
}
|
|
when {
|
|
EQEQ(arg0 = C.<get-p>(), arg1 = 4).not() -> return "4"
|
|
}
|
|
C.<set-p>(<set-?> = 5)
|
|
when {
|
|
EQEQ(arg0 = C.<get-p>(), arg1 = 5).not() -> return "5"
|
|
}
|
|
when {
|
|
EQEQ(arg0 = (C, 5).<get-ext>(), arg1 = 6).not() -> return "6"
|
|
}
|
|
when {
|
|
EQEQ(arg0 = C.g1<String>(t = "7"), arg1 = "7").not() -> return "7"
|
|
}
|
|
when {
|
|
EQEQ(arg0 = (C, "8").<get-g2><String>(), arg1 = "8").not() -> return "8"
|
|
}
|
|
when {
|
|
EQEQ(arg0 = (C, 9).fromInterface<Int>(), arg1 = 9).not() -> return "9"
|
|
}
|
|
when {
|
|
EQEQ(arg0 = (C, "10").<get-fromClass><String>(), arg1 = "10").not() -> return "10"
|
|
}
|
|
when {
|
|
EQEQ(arg0 = C.genericFromSuper(g = "11"), arg1 = "11").not() -> return "11"
|
|
}
|
|
return "OK"
|
|
}
|
|
|