// NO_CHECK_LAMBDA_INLINING // !LANGUAGE: +InlineClasses // FILE: inline.kt inline class IC(val value: String) { inline fun dispatchInline(): T = value as T } inline fun IC.extensionInline(): T = value as T inline fun normalInline(a: IC): T = a.value as T // FILE: box.kt fun extension(a: IC): T = bar(a) { it.extensionInline() } fun dispatch(a: IC): T = bar(a) { it.dispatchInline() } fun normal(a: IC): T = bar(a) { normalInline(it) } fun bar(value: T, f: (T) -> R): R { return f(value) } fun box(): String { var res = extension(IC("O")) + "K" if (res != "OK") return "FAIL 2: $res" res = dispatch(IC("O")) + "K" if (res != "OK") return "FAIL 3: $res" res = normal(IC("O")) + "K" if (res != "OK") return "FAIL 3: $res" return "OK" }