[FIR JS] Support DYNAMIC_RECEIVER_NOT_ALLOWED

This commit is contained in:
Nikolay Lunyak
2023-01-04 15:05:45 +02:00
committed by Space Team
parent 0f876f665a
commit 227969d787
21 changed files with 68 additions and 51 deletions
@@ -1,9 +0,0 @@
object X1
object X2
class Inv<T>
fun dynamic.foo() = X1
fun <T> Inv<T>.foo() = X2
fun test(): X2 = Inv<Any>().foo()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
object X1
object X2
@@ -41,7 +41,7 @@ fun testReassignmentWithStaticCalls(d: dynamic) {
val Any.onAnyVal: Int get() = 1
val Any?.onNullableAnyVal: Int get() = 1
val String.onStringVal: Int get() = 1
val dynamic.onDynamicVal: Int get() = 1
val <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.onDynamicVal: Int get() = 1
class C {
fun test(d: dynamic) {
@@ -47,7 +47,7 @@ var String.onStringVar: Int
get() = 1
set(v) {}
var dynamic.onDynamicVar: Int
var <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.onDynamicVar: Int
get() = 1
set(v) {}
@@ -25,7 +25,7 @@ fun test(d: dynamic) {
fun Any.onAny() {}
fun Any?.onNullableAny() {}
fun String.onString() {}
fun dynamic.onDynamic() {}
fun <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.onDynamic() {}
class C {
fun test(d: dynamic) {
@@ -11,7 +11,7 @@ fun test(d: dynamic) {
d.<!DEBUG_INFO_DYNAMIC!>varOnDynamic<!> = 1
}
fun dynamic.extTest() {
fun <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.extTest() {
<!DEBUG_INFO_DYNAMIC!>onDynamic<!>()
<!DEBUG_INFO_DYNAMIC!>onNullableDynamic<!>()
@@ -32,12 +32,12 @@ fun dynamic.extTest() {
}
fun dynamic.onDynamic() {}
fun dynamic?.onNullableDynamic() {}
fun <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.onDynamic() {}
fun <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic?<!>.onNullableDynamic() {}
val dynamic.valOnDynamic: Int get() = 1
val <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.valOnDynamic: Int get() = 1
var dynamic.varOnDynamic: Int
var <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.varOnDynamic: Int
get() = 1
set(v) {}
@@ -51,8 +51,8 @@ class ForMemberExtensions {
d.<!DEBUG_INFO_DYNAMIC!>memberExtensionVal<!> = 1
}
val dynamic.memberExtensionVal: Int get() = 1
var dynamic.memberExtensionVar: Int
val <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.memberExtensionVal: Int get() = 1
var <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.memberExtensionVar: Int
get() = 1
set(v) {}
}
@@ -1,18 +0,0 @@
fun dynamic.test() {
val v1 = foo()
v1.isDynamic() // to check that anything is resolvable
val v2 = foo(1)
v2.isDynamic() // to check that anything is resolvable
val v3 = foo(1, "")
v3.isDynamic() // to check that anything is resolvable
val v4 = foo<String>()
v4.isDynamic() // to check that anything is resolvable
val v5 = foo
v5.isDynamic() // to check that anything is resolvable
foo = 1
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
fun <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.test() {
val v1 = foo()
v1.isDynamic() // to check that anything is resolvable
@@ -1,11 +0,0 @@
// !MARK_DYNAMIC_CALLS
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun dynamic.foo(s: String, a: Any) {}
fun dynamic.foo(s: Any, a: String) {}
fun test(d: dynamic) {
d.<!DEBUG_INFO_DYNAMIC!>foo<!>(1, "")
d.<!DEBUG_INFO_DYNAMIC!>foo<!>("", "")
d.<!DEBUG_INFO_DYNAMIC!>foo<!>(1, 1)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !MARK_DYNAMIC_CALLS
// !DIAGNOSTICS: -UNUSED_PARAMETER
@@ -1,7 +1,7 @@
// !MARK_DYNAMIC_CALLS
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun dynamic.test() {
fun <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.test() {
<!DEBUG_INFO_DYNAMIC!>foo<!>()
<!DEBUG_INFO_DYNAMIC!>ext<!>()
@@ -57,7 +57,7 @@ class C {
val withInvoke = WithInvoke()
fun dynamic.test() {
fun <!DYNAMIC_RECEIVER_NOT_ALLOWED!>dynamic<!>.test() {
s()
this()