KT-37779 Treat named value arguments in vararg as arguments with '*'
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
// !LANGUAGE: +AllowAssigningArrayElementsToVarargsInNamedFormForFunctions
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// IGNORE_BACKEND: JS
|
||||
|
||||
fun test(vararg s: String) = s[1]
|
||||
|
||||
fun box(): String =
|
||||
test(s = arrayOf("", "OK"))
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// !LANGUAGE: -ProhibitAssigningSingleElementsToVarargsInNamedForm
|
||||
// !LANGUAGE: -ProhibitAssigningSingleElementsToVarargsInNamedForm -AllowAssigningArrayElementsToVarargsInNamedFormForFunctions
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
|
||||
fun box(): String {
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
FILE fqName:<root> fileName:/kt37779.kt
|
||||
FUN name:foo visibility:public modality:FINAL <> (s:kotlin.Array<out kotlin.String>) returnType:kotlin.Unit
|
||||
VALUE_PARAMETER name:s index:0 type:kotlin.Array<out kotlin.String> varargElementType:kotlin.String [vararg]
|
||||
BLOCK_BODY
|
||||
FUN name:test1 visibility:public modality:FINAL <> () returnType:kotlin.Unit
|
||||
BLOCK_BODY
|
||||
CALL 'public final fun foo (vararg s: kotlin.String): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
||||
s: VARARG type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String
|
||||
CALL 'public final fun arrayOf <T> (vararg elements: T of kotlin.arrayOf): kotlin.Array<T of kotlin.arrayOf> [inline] declared in kotlin' type=kotlin.Array<kotlin.String> origin=null
|
||||
<T>: kotlin.String
|
||||
elements: VARARG type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String
|
||||
CONST String type=kotlin.String value=""
|
||||
CONST String type=kotlin.String value="OK"
|
||||
FUN name:test2 visibility:public modality:FINAL <> (ss:kotlin.Array<kotlin.String>) returnType:kotlin.Unit
|
||||
VALUE_PARAMETER name:ss index:0 type:kotlin.Array<kotlin.String>
|
||||
BLOCK_BODY
|
||||
CALL 'public final fun foo (vararg s: kotlin.String): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
||||
s: VARARG type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String
|
||||
GET_VAR 'ss: kotlin.Array<kotlin.String> declared in <root>.test2' type=kotlin.Array<kotlin.String> origin=null
|
||||
@@ -0,0 +1,10 @@
|
||||
// !LANGUAGE: +AllowAssigningArrayElementsToVarargsInNamedFormForFunctions
|
||||
fun foo(vararg s: String) {}
|
||||
|
||||
fun test1() {
|
||||
foo(s = arrayOf("", "OK"))
|
||||
}
|
||||
|
||||
fun test2(ss: Array<String>) {
|
||||
foo(s = ss)
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
FILE fqName:<root> fileName:/kt37779.kt
|
||||
FUN name:foo visibility:public modality:FINAL <> (s:kotlin.Array<out kotlin.String>) returnType:kotlin.Unit
|
||||
VALUE_PARAMETER name:s index:0 type:kotlin.Array<out kotlin.String> varargElementType:kotlin.String [vararg]
|
||||
BLOCK_BODY
|
||||
FUN name:test1 visibility:public modality:FINAL <> () returnType:kotlin.Unit
|
||||
BLOCK_BODY
|
||||
CALL 'public final fun foo (vararg s: kotlin.String): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
||||
s: VARARG type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String
|
||||
SPREAD_ELEMENT
|
||||
CALL 'public final fun arrayOf <T> (vararg elements: T of kotlin.arrayOf): kotlin.Array<T of kotlin.arrayOf> [inline] declared in kotlin' type=kotlin.Array<kotlin.String> origin=null
|
||||
<T>: kotlin.String
|
||||
elements: VARARG type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String
|
||||
CONST String type=kotlin.String value=""
|
||||
CONST String type=kotlin.String value="OK"
|
||||
FUN name:test2 visibility:public modality:FINAL <> (ss:kotlin.Array<kotlin.String>) returnType:kotlin.Unit
|
||||
VALUE_PARAMETER name:ss index:0 type:kotlin.Array<kotlin.String>
|
||||
BLOCK_BODY
|
||||
CALL 'public final fun foo (vararg s: kotlin.String): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
|
||||
s: VARARG type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String
|
||||
SPREAD_ELEMENT
|
||||
GET_VAR 'ss: kotlin.Array<kotlin.String> declared in <root>.test2' type=kotlin.Array<kotlin.String> origin=null
|
||||
Reference in New Issue
Block a user