PR target/83368
[official-gcc.git] / gcc / testsuite / obj-c++.dg / attributes / method-sentinel-1.mm
blob2b8e6fd259def46f2a0a22b83533cadb9d232b4e
1 /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010.  */
2 /* { dg-do compile } */
3 /* { dg-options "-Wall" } */
5 #include <objc/objc.h>
6 #include <stdlib.h>
7 /* Ensure a compatible definition of nil.  */
8 #include "../../objc-obj-c++-shared/objc-test-suite-types.h"
10 @interface NSArray
12   Class isa;
13
14 + (id) arrayWithObject: (id)object __attribute__ ((sentinel));            /* { dg-warning "attribute only applies to variadic functions" } */
15 + (id) arrayWithObjects: (id)firstObject, ... __attribute__ ((sentinel));
17 - (id) initWithObject: (id)object __attribute__ ((sentinel));            /* { dg-warning "attribute only applies to variadic functions" } */
18 - (id) initWithObjects: (id)firstObject, ... __attribute__ ((sentinel));
19 @end
21 void test (id object)
23   NSArray *array;
25   array = [NSArray arrayWithObject: object];
26   array = [NSArray arrayWithObjects: object, nil];
27   array = [NSArray arrayWithObjects: object, object, nil];
28   array = [NSArray arrayWithObjects: object];               /* { dg-warning "not enough variable arguments" } */
29   array = [NSArray arrayWithObjects: object, object];       /* { dg-warning "missing sentinel" } */
31   [array initWithObject: object];
32   [array initWithObjects: object, nil];
33   [array initWithObjects: object, object, nil];
34   [array initWithObjects: object];               /* { dg-warning "not enough variable arguments" } */
35   [array initWithObjects: object, object];       /* { dg-warning "missing sentinel" } */