// !LANGUAGE: +NewInference // !DIAGNOSTICS: -UNUSED_PARAMETER fun id(it: K) = it fun smartCast(arg: E?, fn: () -> Any?): E = TODO() fun noSmartCast1(arg: E1?, fn: () -> E1): E1 = TODO() fun noSmartCast2(arg: E2?, fn: E2): E2 = TODO() fun noSmartCast3(arg: E3?, fn: () -> F): E3 = TODO() fun noSmartCast4(arg: E4?, fn: F): E4 = TODO() fun testSmartCast(s: String?) { id( if (s != null) "" else smartCast(null) { "" } ) s.length } fun testNoSmartCast1(s: String?) { id( if (s != null) "" else noSmartCast1(null) { "" } ) s.length } fun testNoSmartCast2(s: String?) { id( if (s != null) ( {""} ) else noSmartCast2(null) { "" } ) s.length } fun testNoSmartCast3(s: String?) { id( if (s != null) "" else noSmartCast3(null) { "" } ) s.length } // KT-36069 fun testNoSmartCast4(s: String?) { id( if (s != null) ( {""} ) else noSmartCast4(null) { "" } ) s.length }