[FIR] Prohibit calling functions with dynamic receiver over non-dynamics
^KT-63071 Fixed
This commit is contained in:
committed by
Space Team
parent
c69c34ff8b
commit
875e2b0cd6
@@ -10,5 +10,5 @@ fun test() {
|
||||
|
||||
fun <T> dynamic(body: dynamic.() -> T): T {
|
||||
val topLevel = null
|
||||
return topLevel.body()
|
||||
return topLevel.<!DYNAMIC_RECEIVER_EXPECTED_BUT_WAS_NON_DYNAMIC!>body<!>()
|
||||
}
|
||||
|
||||
+2
-2
@@ -21,8 +21,8 @@ fun test(d: dynamic, a: Any?) {
|
||||
println(item)
|
||||
}
|
||||
|
||||
a.<!UNRESOLVED_REFERENCE!>onDynamicFun<!>()
|
||||
a.<!UNRESOLVED_REFERENCE!>onDynamicProperty<!>
|
||||
a.<!DYNAMIC_RECEIVER_EXPECTED_BUT_WAS_NON_DYNAMIC!>onDynamicFun<!>()
|
||||
a.<!DYNAMIC_RECEIVER_EXPECTED_BUT_WAS_NON_DYNAMIC!>onDynamicProperty<!>
|
||||
}
|
||||
|
||||
fun <T> eatT(t: T) {}
|
||||
|
||||
+2
-2
@@ -24,7 +24,7 @@ fun test(d: dynamic) {
|
||||
(d as String).onStringVal
|
||||
(d as Any).onAnyVal
|
||||
(d as Any?).onNullableAnyVal
|
||||
(d as Any).<!UNRESOLVED_REFERENCE!>onDynamicVal<!>
|
||||
(d as Any).<!DYNAMIC_RECEIVER_EXPECTED_BUT_WAS_NON_DYNAMIC!>onDynamicVal<!>
|
||||
}
|
||||
|
||||
fun testReassignmentWithSafeCall(d: dynamic) {
|
||||
@@ -35,7 +35,7 @@ fun testReassignmentWithStaticCalls(d: dynamic) {
|
||||
(d as String).<!VAL_REASSIGNMENT!>onStringVal<!> = 1
|
||||
(d as Any).<!VAL_REASSIGNMENT!>onAnyVal<!> = 1
|
||||
(d as Any?).<!VAL_REASSIGNMENT!>onNullableAnyVal<!> = 1
|
||||
(d as Any).<!UNRESOLVED_REFERENCE!>onDynamicVal<!> = 1
|
||||
(d as Any).<!DYNAMIC_RECEIVER_EXPECTED_BUT_WAS_NON_DYNAMIC, VAL_REASSIGNMENT!>onDynamicVal<!> = 1
|
||||
}
|
||||
|
||||
val Any.onAnyVal: Int get() = 1
|
||||
|
||||
+3
-3
@@ -22,17 +22,17 @@ fun test(d: dynamic) {
|
||||
|
||||
d.<!DEBUG_INFO_DYNAMIC!>onDynamicVar<!> = 1
|
||||
|
||||
d?.<!UNRESOLVED_REFERENCE!>onDynamicVar<!> = 1
|
||||
d?.<!DYNAMIC_RECEIVER_EXPECTED_BUT_WAS_NON_DYNAMIC!>onDynamicVar<!> = 1
|
||||
|
||||
(d as String).onStringVar
|
||||
(d as Any).onAnyVar
|
||||
(d as Any?).onNullableAnyVar
|
||||
(d as Any).<!UNRESOLVED_REFERENCE!>onDynamicVar<!>
|
||||
(d as Any).<!DYNAMIC_RECEIVER_EXPECTED_BUT_WAS_NON_DYNAMIC!>onDynamicVar<!>
|
||||
|
||||
(d as String).onStringVar = 1
|
||||
(d as Any).onAnyVar = 1
|
||||
(d as Any?).onNullableAnyVar = 1
|
||||
(d as Any).<!UNRESOLVED_REFERENCE!>onDynamicVar<!> = 1
|
||||
(d as Any).<!DYNAMIC_RECEIVER_EXPECTED_BUT_WAS_NON_DYNAMIC!>onDynamicVar<!> = 1
|
||||
}
|
||||
|
||||
var Any.onAnyVar: Int
|
||||
|
||||
+2
-2
@@ -14,12 +14,12 @@ fun test(d: dynamic) {
|
||||
d.<!DEBUG_INFO_DYNAMIC!>onString<!>()
|
||||
|
||||
d.<!DEBUG_INFO_DYNAMIC!>onDynamic<!>()
|
||||
d?.<!UNRESOLVED_REFERENCE!>onDynamic<!>()
|
||||
d?.<!DYNAMIC_RECEIVER_EXPECTED_BUT_WAS_NON_DYNAMIC!>onDynamic<!>()
|
||||
|
||||
(d as String).onString()
|
||||
(d as Any).onAny()
|
||||
(d as Any?).onNullableAny()
|
||||
(d as Any).<!UNRESOLVED_REFERENCE!>onDynamic<!>()
|
||||
(d as Any).<!DYNAMIC_RECEIVER_EXPECTED_BUT_WAS_NON_DYNAMIC!>onDynamic<!>()
|
||||
}
|
||||
|
||||
fun Any.onAny() {}
|
||||
|
||||
Reference in New Issue
Block a user