[K/JS] Allow parameter properties inside external declarations ^KT-65965 Fixed

This commit is contained in:
Artem Kobzar
2024-02-29 09:46:59 +00:00
committed by Space Team
parent 5e83350576
commit 4f4c98ec73
12 changed files with 234 additions and 7 deletions
@@ -0,0 +1,66 @@
// FIR_IDENTICAL
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses, -JsAllowValueClassesInExternals, +JsExternalPropertyParameters
// !DIAGNOSTICS: -OPT_IN_USAGE
// FILE: uint.kt
package kotlin
inline class UInt(private val i: Int)
// FILE: test.kt
inline class SomeIC(val a: Int)
external val l: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
external val ll
get(): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!> = definedExternally
external var r: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
external var rr: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
get() = definedExternally
set(<!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>v: SomeIC<!>) { definedExternally }
external fun foo(): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
external fun foo(<!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
external fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
external fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!><!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> args: SomeIC<!>)
external fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>ui: UInt<!>, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>vararg args: UInt<!>)
external class CC(
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>a: SomeIC<!>,
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>val b: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!><!>,
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>var c: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!><!>
) {
val l: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
var r: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
fun foo(): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
fun foo(<!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
class N(
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>a: SomeIC<!>,
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>val b: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!><!>,
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>var c: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!><!>
) {
val l: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
var r: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
fun foo(): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
fun foo(<!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
}
}
external interface EI {
val l: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
var r: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
fun foo(): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
fun foo(<!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION!>SomeIC<!>
}
@@ -0,0 +1,66 @@
// FIR_IDENTICAL
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses, +JsAllowValueClassesInExternals, +JsExternalPropertyParameters
// !DIAGNOSTICS: +INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING -OPT_IN_USAGE
// FILE: uint.kt
package kotlin
inline class UInt(private val i: Int)
// FILE: test.kt
inline class SomeIC(val a: Int)
external val l: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
external val ll
get(): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!> = definedExternally
external var r: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
external var rr: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
get() = definedExternally
set(<!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>v: SomeIC<!>) { definedExternally }
external fun foo(): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
external fun foo(<!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
external fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
external fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!><!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> args: SomeIC<!>)
external fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>ui: UInt<!>, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>vararg args: UInt<!>)
external class CC(
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>a: SomeIC<!>,
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>val b: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!><!>,
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>var c: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!><!>
) {
val l: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
var r: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
fun foo(): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
fun foo(<!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
class N(
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>a: SomeIC<!>,
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>val b: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!><!>,
<!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>var c: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!><!>
) {
val l: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
var r: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
fun foo(): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
fun foo(<!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
}
}
external interface EI {
val l: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
var r: <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
fun foo(): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
fun foo(<!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
fun foo(a: Int, <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>c: SomeIC<!>): <!INLINE_CLASS_IN_EXTERNAL_DECLARATION_WARNING!>SomeIC<!>
}
@@ -0,0 +1,11 @@
// FIR_IDENTICAL
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses, +JsExternalPropertyParameters
// !DIAGNOSTICS: +ENUM_CLASS_IN_EXTERNAL_DECLARATION_WARNING
external inline class <!WRONG_EXTERNAL_DECLARATION!>C(val a: Int)<!> {
fun foo()
}
<!WRONG_MODIFIER_TARGET!>inline<!> external enum class <!ENUM_CLASS_IN_EXTERNAL_DECLARATION_WARNING, WRONG_EXTERNAL_DECLARATION!>E<!> {
A
}
@@ -1,2 +1,2 @@
// FIR_IDENTICAL
external class C(x: Int, <!EXTERNAL_CLASS_CONSTRUCTOR_PROPERTY_PARAMETER!>val y: String<!>)
external class C(x: Int, <!EXTERNAL_CLASS_CONSTRUCTOR_PROPERTY_PARAMETER!>val y: String<!>)
@@ -0,0 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +JsExternalPropertyParameters
external class C(x: Int, val y: String)