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
|
||||
<!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
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user