1 /* Based on objc/execute/va_method.m, by Nicola Pero */
3 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
5 #include "../objc-obj-c++-shared/TestsuiteObject.m"
10 /* Test methods with "C-style" trailing arguments, with or without ellipsis. */
12 @interface MathClass: TestsuiteObject
13 /* sum positive numbers; -1 ends the list */
14 + (int) sum: (int)firstNumber, int secondNumber, ...;
15 + (int) prod: (int) firstNumber, int secondNumber, int thirdNumber;
16 + (int) minimum: (int) firstNumber, ...;
19 @implementation MathClass
20 + (int) sum: (int)firstNumber, int secondNumber, ...
23 int sum = 0, number = 0;
25 va_start (ap, secondNumber);
26 number = firstNumber + secondNumber;
31 number = va_arg (ap, int);
38 + (int) prod: (int) firstNumber, int secondNumber, int thirdNumber {
39 return firstNumber * secondNumber * thirdNumber;
41 + (int) minimum: (int)firstNumber, ...
44 int minimum = 999, number = 0;
46 va_start (ap, firstNumber);
51 minimum = (minimum < number ? minimum: number);
52 number = va_arg (ap, int);
63 if ([MathClass sum: 1, 2, 3, 4, 5, -1] != 15)
65 if ([MathClass prod: 4, 5, 6] != 120)
67 if ([MathClass minimum: 17, 9, 133, 84, 35, -1] != 9)