object Host { private constructor() /* primary */ { super/*Any*/() /* () */ } fun importedObjectMemberWithVarargs(vararg xs: Int): String { return "abc" } } fun coerceToUnit(fn: Function1) { } fun fnWithDefault(a: Int, b: Int = 42): String { return "abc" } fun fnWithDefaults(a: Int = 1, b: Int = 2): String { return "" } fun fnWithVarargs(vararg xs: Int): String { return "abc" } fun testCoercionToUnit() { return coerceToUnit(fn = { // BLOCK local fun fnWithDefault(p0: Int) { fnWithDefault(a = p0) /*~> Unit */ } ::fnWithDefault }) } fun testDefault(): String { return use(fn = { // BLOCK local fun fnWithDefault(p0: Int): String { return fnWithDefault(a = p0) } ::fnWithDefault }) } fun testDefault0(): String { return use0(fn = { // BLOCK local fun fnWithDefaults(): String { return fnWithDefaults() } ::fnWithDefaults }) } fun testImportedObjectMember(): String { return use(fn = { // BLOCK local fun Host.importedObjectMemberWithVarargs(p0: Int): String { return receiver.importedObjectMemberWithVarargs(xs = [p0]) } Host::importedObjectMemberWithVarargs }) } fun testVararg(): String { return use(fn = { // BLOCK local fun fnWithVarargs(p0: Int): String { return fnWithVarargs(xs = [p0]) } ::fnWithVarargs }) } fun testVararg0(): String { return use0(fn = { // BLOCK local fun fnWithVarargs(): String { return fnWithVarargs() } ::fnWithVarargs }) } fun use(fn: Function1): String { return fn.invoke(p1 = 1) } fun use0(fn: Function0): String { return fn.invoke() }