Making var arg kParameters default to empty array no argument given

fixes KT-29969
This commit is contained in:
Mathias Quintero
2020-03-14 10:33:41 +01:00
committed by Alexander Udalov
parent b1dbacf45f
commit 34a64d9171
9 changed files with 118 additions and 0 deletions
@@ -22728,6 +22728,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
runTest("compiler/testData/codegen/box/reflection/callBy/defaultInSuperInterface.kt");
}
@TestMetadata("emptyVarArg.kt")
public void testEmptyVarArg() throws Exception {
runTest("compiler/testData/codegen/box/reflection/callBy/emptyVarArg.kt");
}
@TestMetadata("extensionFunction.kt")
public void testExtensionFunction() throws Exception {
runTest("compiler/testData/codegen/box/reflection/callBy/extensionFunction.kt");
@@ -23035,6 +23040,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callByKotlin.kt");
}
@TestMetadata("callByWithEmptyVarArg.kt")
public void testCallByWithEmptyVarArg() throws Exception {
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callByWithEmptyVarArg.kt");
}
@TestMetadata("callJava.kt")
public void testCallJava() throws Exception {
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callJava.kt");
@@ -0,0 +1,19 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
import kotlin.test.assertEquals
fun join(vararg strings: String) = strings.toList().joinToString("")
fun sum(vararg bytes: Byte) = bytes.toList().fold(0) { acc, el -> acc + el }
fun box(): String {
val j = ::join
val s = ::sum
assertEquals("", j.callBy(emptyMap()))
assertEquals(0, s.callBy(emptyMap()))
return "OK"
}
@@ -0,0 +1,25 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS, NATIVE
// WITH_REFLECT
import kotlin.reflect.*
import kotlin.reflect.full.*
import kotlin.test.assert
annotation class Foo(vararg val strings: String)
annotation class Bar(vararg val bytes: Byte)
fun box(): String {
val fooConstructor = Foo::class.primaryConstructor!!
val foo = fooConstructor.callBy(emptyMap())
assert(foo.strings.isEmpty())
val barConstructor = Bar::class.primaryConstructor!!
val bar = barConstructor.callBy(emptyMap())
assert(bar.bytes.isEmpty())
return "OK"
}
@@ -24289,6 +24289,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/reflection/callBy/defaultInSuperInterface.kt");
}
@TestMetadata("emptyVarArg.kt")
public void testEmptyVarArg() throws Exception {
runTest("compiler/testData/codegen/box/reflection/callBy/emptyVarArg.kt");
}
@TestMetadata("extensionFunction.kt")
public void testExtensionFunction() throws Exception {
runTest("compiler/testData/codegen/box/reflection/callBy/extensionFunction.kt");
@@ -24596,6 +24601,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callByKotlin.kt");
}
@TestMetadata("callByWithEmptyVarArg.kt")
public void testCallByWithEmptyVarArg() throws Exception {
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callByWithEmptyVarArg.kt");
}
@TestMetadata("callJava.kt")
public void testCallJava() throws Exception {
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callJava.kt");
@@ -23106,6 +23106,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/reflection/callBy/defaultInSuperInterface.kt");
}
@TestMetadata("emptyVarArg.kt")
public void testEmptyVarArg() throws Exception {
runTest("compiler/testData/codegen/box/reflection/callBy/emptyVarArg.kt");
}
@TestMetadata("extensionFunction.kt")
public void testExtensionFunction() throws Exception {
runTest("compiler/testData/codegen/box/reflection/callBy/extensionFunction.kt");
@@ -23413,6 +23418,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callByKotlin.kt");
}
@TestMetadata("callByWithEmptyVarArg.kt")
public void testCallByWithEmptyVarArg() throws Exception {
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callByWithEmptyVarArg.kt");
}
@TestMetadata("callJava.kt")
public void testCallJava() throws Exception {
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callJava.kt");
@@ -22728,6 +22728,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/reflection/callBy/defaultInSuperInterface.kt");
}
@TestMetadata("emptyVarArg.kt")
public void testEmptyVarArg() throws Exception {
runTest("compiler/testData/codegen/box/reflection/callBy/emptyVarArg.kt");
}
@TestMetadata("extensionFunction.kt")
public void testExtensionFunction() throws Exception {
runTest("compiler/testData/codegen/box/reflection/callBy/extensionFunction.kt");
@@ -23035,6 +23040,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callByKotlin.kt");
}
@TestMetadata("callByWithEmptyVarArg.kt")
public void testCallByWithEmptyVarArg() throws Exception {
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callByWithEmptyVarArg.kt");
}
@TestMetadata("callJava.kt")
public void testCallJava() throws Exception {
runTest("compiler/testData/codegen/box/reflection/createAnnotation/callJava.kt");