[FE] Prohibit expect external and expect tailrec

^KT-58536 Fixed
This commit is contained in:
Roman Efremov
2023-05-17 16:08:33 +02:00
committed by Space Team
parent e6d5df18b8
commit 439cc88525
26 changed files with 298 additions and 34 deletions
@@ -0,0 +1,38 @@
// MODULE: m1-common
// FILE: common.kt
expect <!EXPECTED_EXTERNAL_DECLARATION!>external<!> fun foo()
expect fun bar()
expect <!EXPECTED_EXTERNAL_DECLARATION, WRONG_MODIFIER_TARGET!>external<!> var prop: String
expect var getAndSet: String
<!EXPECTED_EXTERNAL_DECLARATION!>external<!> get
<!EXPECTED_EXTERNAL_DECLARATION!>external<!> set
<!EXPECTED_EXTERNAL_DECLARATION, WRONG_MODIFIER_TARGET!>external<!> expect val explicitGetter: String
<!EXPECTED_EXTERNAL_DECLARATION!>external<!> get
expect <!EXPECTED_EXTERNAL_DECLARATION, WRONG_MODIFIER_TARGET!>external<!> class A {
<!EXPECTED_EXTERNAL_DECLARATION!>external<!> fun foo()
fun bar()
}
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
actual external fun foo()
actual external fun bar()
actual <!WRONG_MODIFIER_TARGET!>external<!> var prop: String
actual var getAndSet: String
external get
external set
actual <!WRONG_MODIFIER_TARGET!>external<!> val explicitGetter: String
external get
actual class A {
actual external fun foo()
actual external fun bar()
}
@@ -0,0 +1,38 @@
// MODULE: m1-common
// FILE: common.kt
expect <!EXPECTED_EXTERNAL_DECLARATION, EXPECTED_EXTERNAL_DECLARATION{JVM}!>external<!> fun foo()
expect fun bar()
expect <!EXPECTED_EXTERNAL_DECLARATION, EXPECTED_EXTERNAL_DECLARATION{JVM}, WRONG_MODIFIER_TARGET{JVM}!>external<!> var prop: String
expect var getAndSet: String
<!EXPECTED_EXTERNAL_DECLARATION, EXPECTED_EXTERNAL_DECLARATION{JVM}!>external<!> get
<!EXPECTED_EXTERNAL_DECLARATION, EXPECTED_EXTERNAL_DECLARATION{JVM}!>external<!> set
<!EXPECTED_EXTERNAL_DECLARATION, EXPECTED_EXTERNAL_DECLARATION{JVM}, WRONG_MODIFIER_TARGET{JVM}!>external<!> expect val explicitGetter: String
<!EXPECTED_EXTERNAL_DECLARATION, EXPECTED_EXTERNAL_DECLARATION{JVM}!>external<!> get
expect <!EXPECTED_EXTERNAL_DECLARATION, EXPECTED_EXTERNAL_DECLARATION{JVM}, WRONG_MODIFIER_TARGET{JVM}!>external<!> class A {
<!EXPECTED_EXTERNAL_DECLARATION, EXPECTED_EXTERNAL_DECLARATION{JVM}!>external<!> fun foo()
fun bar()
}
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
actual external fun foo()
actual external fun bar()
actual <!WRONG_MODIFIER_TARGET!>external<!> var prop: String
actual var getAndSet: String
external get
external set
actual <!WRONG_MODIFIER_TARGET!>external<!> val explicitGetter: String
external get
actual class A {
actual external fun foo()
actual external fun bar()
}
@@ -0,0 +1,24 @@
// MODULE: m1-common
// FILE: common.kt
expect <!EXPECTED_TAILREC_FUNCTION, NO_TAIL_CALLS_FOUND!>tailrec<!> fun foo(p: Int): Int
expect fun bar(p: Int): Int
expect <!WRONG_MODIFIER_TARGET!>tailrec<!> val notReport: String
expect class A {
<!EXPECTED_TAILREC_FUNCTION, NO_TAIL_CALLS_FOUND!>tailrec<!> fun foo(p: Int): Int
fun bar(p: Int): Int
}
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
actual tailrec fun foo(p: Int): Int = foo(p)
actual tailrec fun bar(p: Int): Int = bar(p)
actual val notReport: String = "123"
actual class A {
actual tailrec fun foo(p: Int): Int = foo(p)
actual tailrec fun bar(p: Int): Int = bar(p)
}
@@ -0,0 +1,24 @@
// MODULE: m1-common
// FILE: common.kt
expect <!EXPECTED_TAILREC_FUNCTION, EXPECTED_TAILREC_FUNCTION{JVM}!>tailrec<!> fun foo(p: Int): Int
expect fun bar(p: Int): Int
expect <!WRONG_MODIFIER_TARGET, WRONG_MODIFIER_TARGET{JVM}!>tailrec<!> val notReport: String
expect class A {
<!EXPECTED_TAILREC_FUNCTION, EXPECTED_TAILREC_FUNCTION{JVM}!>tailrec<!> fun foo(p: Int): Int
fun bar(p: Int): Int
}
// MODULE: m1-jvm()()(m1-common)
// FILE: jvm.kt
actual tailrec fun foo(p: Int): Int = foo(p)
actual tailrec fun bar(p: Int): Int = bar(p)
actual val notReport: String = "123"
actual class A {
actual tailrec fun foo(p: Int): Int = foo(p)
actual tailrec fun bar(p: Int): Int = bar(p)
}