| // TARGET_BACKEND: NATIVE |
| // FILECHECK_STAGE: CStubs |
| // FREE_COMPILER_ARGS: -Xdisable-phases=DCEPhase |
| |
| interface I1 { |
| fun foo(): Int |
| } |
| |
| class C1 : I1 { |
| override fun foo(): Nothing = TODO() |
| } |
| // CHECK-LABEL: define i32 @"kfun:C1#$<bridge-DN>foo(){}kotlin.Nothing(){}kotlin.Int |
| // CHECK-LABEL: epilogue: |
| |
| open class Foo2<T>(val x: T) |
| |
| interface I2 { |
| val x: Unit |
| } |
| |
| class Bar2 : Foo2<Unit>(Unit), I2 |
| // CHECK-LABEL: define void @"kfun:Bar2#$<bridge-DN><get-x>(){}(){} |
| // CHECK-LABEL: epilogue: |
| |
| fun getX2(i: I2) = i.x |
| |
| interface I3 { |
| fun foo(): Nothing |
| } |
| |
| open class Foo3<T : Int> { |
| fun foo(): T = TODO() |
| } |
| |
| class Bar3 : Foo3<Nothing>(), I3 |
| // CHECK-LABEL: define void @"kfun:Bar3#$<bridge-DN>foo(){}kotlin.Nothing(){}kotlin.Nothing |
| // CHECK-LABEL: epilogue: |
| |
| // CHECK-LABEL: define ptr @"kfun:#box(){}kotlin.String" |
| fun box(): String { |
| val i1: I1 = C1() |
| try { |
| println(i1.foo()) |
| } catch (t: Throwable) { } |
| |
| val i2: I2 = Bar2() |
| getX2(i2) |
| |
| val i3: I3 = Bar3() |
| try { |
| i3.foo() |
| } catch (t: Throwable) { } |
| |
| return "OK" |
| } |