Files
kotlin-fork/compiler/testData/codegen/box/funInterface/samConstructorExplicitInvocation.kt
T
Svyatoslav Kuzmich b6ad1584c9 [Wasm] Improve interface method dispatch
- Use typed Wasm tables for each interface method to avoid runtime
  function type check

- Use linear search by implemented interface rather than by individual
  virtual function signature
2020-12-30 19:29:10 +03:00

34 lines
627 B
Kotlin
Vendored

// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: SAM_CONVERSIONS
// !LANGUAGE: +FunctionalInterfaceConversion
fun interface S {
fun invoke(): String
}
fun interface G<T> {
fun foo(t: T): T
}
fun interface C: G<Char>
fun interface C2 {
fun bar(c: Char): Char
}
fun box(): String {
val g = G<Int> { it * 10 }
if (g.foo(2) != 20) return "fail1"
val g2 = G { a: Char -> a + 1 }
if (g2.foo('a') != 'b') return "fail2"
val c = C { it + 2 }
if (c.foo('A') != 'C') return "fail3"
val c2 = C2 { it + 3 }
if (c2.bar('0') != '3') return "fail4"
return S { "OK" }.invoke()
}