diff --git a/compiler/testData/diagnostics/tests/smartCasts/safecalls/safeAccessReceiverNotNull.kt b/compiler/testData/diagnostics/tests/smartCasts/safecalls/safeAccessReceiverNotNull.kt index 03d0451c7f1..463e4bedcac 100644 --- a/compiler/testData/diagnostics/tests/smartCasts/safecalls/safeAccessReceiverNotNull.kt +++ b/compiler/testData/diagnostics/tests/smartCasts/safecalls/safeAccessReceiverNotNull.kt @@ -121,4 +121,16 @@ fun falsePositive(w: Wrapper) { // Here we should NOT have smart cast w.unwrap().length } +} + +class Invokable(val x: String) { + operator fun invoke() = x +} + +class InvokableProperty(val i: Invokable) + +fun checkInvokable(ip: InvokableProperty?) { + if (ip?.i() == "Hello") { + ip.hashCode() + } } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/smartCasts/safecalls/safeAccessReceiverNotNull.txt b/compiler/testData/diagnostics/tests/smartCasts/safecalls/safeAccessReceiverNotNull.txt index 75a9a529cec..ca0619071bf 100644 --- a/compiler/testData/diagnostics/tests/smartCasts/safecalls/safeAccessReceiverNotNull.txt +++ b/compiler/testData/diagnostics/tests/smartCasts/safecalls/safeAccessReceiverNotNull.txt @@ -1,5 +1,6 @@ package +public fun checkInvokable(/*0*/ ip: InvokableProperty?): kotlin.Unit public fun falsePositive(/*0*/ w: Wrapper): kotlin.Unit public fun getA(): A? public fun handleGet(/*0*/ arg: HttpExchange): HttpExchange @@ -35,6 +36,23 @@ public final class HttpExchange { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } +public final class Invokable { + public constructor Invokable(/*0*/ x: kotlin.String) + public final val x: kotlin.String + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final operator fun invoke(): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class InvokableProperty { + public constructor InvokableProperty(/*0*/ i: Invokable) + public final val i: Invokable + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + public open class SomeClass { public constructor SomeClass(/*0*/ data: kotlin.Any) public final val data: kotlin.Any