// !WITH_NEW_INFERENCE // !CHECK_TYPE // !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE class TestClass { inline operator fun invoke(task: () -> T) = task() } fun test(value: T, test: TestClass): T { val x = test { return value } x checkType { _() } return value } // --- class Future interface FutureCallback { operator fun invoke(f: (E) -> T): Future } fun test(cb: FutureCallback) { val a = cb { it[0] } a checkType { _>() } val b = cb { it } b checkType { _>() } val c = cb {} c checkType { _>() } cb.let { callback -> val d = callback { it.length } d checkType { _>() } } }