Receiver smart casts: additional test for a?.b() when b is invokable property
This commit is contained in:
+12
@@ -121,4 +121,16 @@ fun falsePositive(w: Wrapper) {
|
|||||||
// Here we should NOT have smart cast
|
// Here we should NOT have smart cast
|
||||||
<!SMARTCAST_IMPOSSIBLE!>w.unwrap()<!>.length
|
<!SMARTCAST_IMPOSSIBLE!>w.unwrap()<!>.length
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Invokable(val x: String) {
|
||||||
|
operator fun invoke() = x
|
||||||
|
}
|
||||||
|
|
||||||
|
class InvokableProperty(val i: Invokable)
|
||||||
|
|
||||||
|
fun checkInvokable(ip: InvokableProperty?) {
|
||||||
|
if (ip?.<!UNSAFE_IMPLICIT_INVOKE_CALL!>i<!>() == "Hello") {
|
||||||
|
<!DEBUG_INFO_SMARTCAST!>ip<!>.hashCode()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+18
@@ -1,5 +1,6 @@
|
|||||||
package
|
package
|
||||||
|
|
||||||
|
public fun checkInvokable(/*0*/ ip: InvokableProperty?): kotlin.Unit
|
||||||
public fun falsePositive(/*0*/ w: Wrapper): kotlin.Unit
|
public fun falsePositive(/*0*/ w: Wrapper): kotlin.Unit
|
||||||
public fun getA(): A?
|
public fun getA(): A?
|
||||||
public fun handleGet(/*0*/ arg: HttpExchange): HttpExchange
|
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 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 open class SomeClass {
|
||||||
public constructor SomeClass(/*0*/ data: kotlin.Any)
|
public constructor SomeClass(/*0*/ data: kotlin.Any)
|
||||||
public final val data: kotlin.Any
|
public final val data: kotlin.Any
|
||||||
|
|||||||
Reference in New Issue
Block a user