Restore a test
This commit is contained in:
@@ -0,0 +1,78 @@
|
|||||||
|
// !LANGUAGE: +FunctionTypesWithBigArity
|
||||||
|
// WITH_RUNTIME
|
||||||
|
// TARGET_BACKEND: JVM_IR
|
||||||
|
// FILE: J.java
|
||||||
|
|
||||||
|
// import kotlin.jvm.functions.Arity;
|
||||||
|
import kotlin.jvm.functions.FunctionN;
|
||||||
|
import kotlin.Unit;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
public class J {
|
||||||
|
// TODO: uncomment arity as soon as Arity is introduced
|
||||||
|
public static void test(/* @Arity(30) */ FunctionN<Integer> f) {
|
||||||
|
Object o = new Integer(0);
|
||||||
|
for (int i = 0; i < 42; i++) {
|
||||||
|
Object[] args = new Object[i];
|
||||||
|
Arrays.fill(args, o);
|
||||||
|
try {
|
||||||
|
if (f.invoke(args).intValue() != 300 + i) {
|
||||||
|
throw new AssertionError("Bad return value from function");
|
||||||
|
}
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
if (i == 3 || i == 13 || i == 30 || i == 33) {
|
||||||
|
throw new AssertionError(String.format("Call with %d arguments is expected to succeed", i), e);
|
||||||
|
}
|
||||||
|
// OK
|
||||||
|
|
||||||
|
if (!e.getMessage().contains("30")) {
|
||||||
|
throw new AssertionError("Exception must specify the expected number of arguments: " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
continue;
|
||||||
|
} catch (Throwable e) {
|
||||||
|
throw new AssertionError(
|
||||||
|
"Incorrect exception (IllegalArgumentException expected): " + e.getClass().getName() + ", i = " + i, e
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (i != 3 && i != 13 && i != 30 && i != 33) {
|
||||||
|
throw new AssertionError ("IllegalArgumentException expected, but nothing was thrown, i = " + i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: K.kt
|
||||||
|
|
||||||
|
class Fun : (Int, Int, Int) -> Int,
|
||||||
|
(Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int) -> Int,
|
||||||
|
(Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int,
|
||||||
|
Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int) -> Int,
|
||||||
|
(Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int,
|
||||||
|
Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int) -> Int {
|
||||||
|
override fun invoke(p00: Int, p01: Int, p02: Int): Int = 303
|
||||||
|
|
||||||
|
override fun invoke(
|
||||||
|
p00: Int, p01: Int, p02: Int, p03: Int, p04: Int, p05: Int, p06: Int, p07: Int, p08: Int, p09: Int,
|
||||||
|
p10: Int, p11: Int, p12: Int
|
||||||
|
): Int = 313
|
||||||
|
|
||||||
|
override fun invoke(
|
||||||
|
p00: Int, p01: Int, p02: Int, p03: Int, p04: Int, p05: Int, p06: Int, p07: Int, p08: Int, p09: Int,
|
||||||
|
p10: Int, p11: Int, p12: Int, p13: Int, p14: Int, p15: Int, p16: Int, p17: Int, p18: Int, p19: Int,
|
||||||
|
p20: Int, p21: Int, p22: Int, p23: Int, p24: Int, p25: Int, p26: Int, p27: Int, p28: Int, p29: Int
|
||||||
|
): Int = 330
|
||||||
|
|
||||||
|
override fun invoke(
|
||||||
|
p00: Int, p01: Int, p02: Int, p03: Int, p04: Int, p05: Int, p06: Int, p07: Int, p08: Int, p09: Int,
|
||||||
|
p10: Int, p11: Int, p12: Int, p13: Int, p14: Int, p15: Int, p16: Int, p17: Int, p18: Int, p19: Int,
|
||||||
|
p20: Int, p21: Int, p22: Int, p23: Int, p24: Int, p25: Int, p26: Int, p27: Int, p28: Int, p29: Int,
|
||||||
|
p30: Int, p31: Int, p32: Int
|
||||||
|
): Int = 333
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
@Suppress("DEPRECATION_ERROR")
|
||||||
|
J.test(Fun() as kotlin.jvm.functions.FunctionN<Int>)
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
+5
@@ -10704,6 +10704,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/functions/bigArity/callFromJava.kt");
|
runTest("compiler/testData/codegen/box/functions/bigArity/callFromJava.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("callFunViaVararg.kt")
|
||||||
|
public void testCallFunViaVararg() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/functions/bigArity/callFunViaVararg.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("callWithIncorrectNumberOfArguments.kt")
|
@TestMetadata("callWithIncorrectNumberOfArguments.kt")
|
||||||
public void testCallWithIncorrectNumberOfArguments() throws Exception {
|
public void testCallWithIncorrectNumberOfArguments() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/functions/bigArity/callWithIncorrectNumberOfArguments.kt");
|
runTest("compiler/testData/codegen/box/functions/bigArity/callWithIncorrectNumberOfArguments.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user