// !DIAGNOSTICS: -UNUSED_PARAMETER, -SENSELESS_COMPARISON, -DEBUG_INFO_SMARTCAST fun takeNotNull(s: String) {} fun notNull(): T = TODO() fun nullable(): T? = null fun dependOn(x: T) = x fun test() { takeNotNull(notNull()!!) takeNotNull(nullable()!!) var x: String? = null takeNotNull(dependOn(x)!!) takeNotNull(dependOn(dependOn(x))!!) takeNotNull(dependOn(dependOn(x)!!)) takeNotNull(dependOn(dependOn(x!!))) if (x != null) { takeNotNull(dependOn(x)!!) takeNotNull(dependOn(dependOn(x))!!) takeNotNull(dependOn(dependOn(x)!!)) } }