]> gcc.gnu.org Git - gcc.git/blame - gcc/testsuite/objc.dg/property/at-property-16.m
In gcc/objc/: 2010-11-14 Nicola Pero <nicola.pero@meta-innovation.com>
[gcc.git] / gcc / testsuite / objc.dg / property / at-property-16.m
CommitLineData
4ca5d2a7
NP
1/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */
2/* { dg-do compile } */
3
4#include <objc/objc.h>
5
6/* Test that if you have a property declared in a class and a
7 sub-class, the attributes match. */
8
9@interface MyRootClass
10{
11 Class isa;
12}
13@property (assign) id a;
14@property (retain) id b;
15@property int c;
16@property (nonatomic) int d;
17@property int e;
18@property int f;
19@property int g;
20@property (readonly) int h;
21@property (readonly,getter=getMe) int i;
22@end
23
24@interface MyClass : MyRootClass
25@property (assign) id a;
26@property (retain) id b;
27@property int c;
28@property (nonatomic) int d;
29@property int e;
30@property int f;
31@property int g;
32@property (readonly) int h;
33@property (readonly,getter=getMe) int i;
34@end
35
36@interface MyClass2 : MyRootClass
8926bd5d 37@property (retain) id a; /* { dg-warning "assign semantics attributes of property .a. conflict with previous declaration" } */
4ca5d2a7 38 /* { dg-message "originally specified here" "" { target *-*-* } 13 } */
8926bd5d 39@property (assign) id b; /* { dg-warning "assign semantics attributes of property .b. conflict with previous declaration" } */
4ca5d2a7 40 /* { dg-message "originally specified here" "" { target *-*-* } 14 } */
8926bd5d 41@property (nonatomic) int c; /* { dg-warning ".nonatomic. attribute of property .c. conflicts with previous declaration" } */
4ca5d2a7 42 /* { dg-message "originally specified here" "" { target *-*-* } 15 } */
8926bd5d 43@property int d; /* { dg-warning ".nonatomic. attribute of property .d. conflicts with previous declaration" } */
4ca5d2a7 44 /* { dg-message "originally specified here" "" { target *-*-* } 16 } */
8926bd5d 45@property (setter=setX:) int e; /* { dg-warning ".setter. attribute of property .e. conflicts with previous declaration" } */
4ca5d2a7 46 /* { dg-message "originally specified here" "" { target *-*-* } 17 } */
8926bd5d 47@property (getter=x) int f; /* { dg-warning ".getter. attribute of property .f. conflicts with previous declaration" } */
4ca5d2a7 48 /* { dg-message "originally specified here" "" { target *-*-* } 18 } */
8926bd5d 49@property (readonly) int g; /* { dg-warning ".readonly. attribute of property .g. conflicts with previous declaration" } */
4ca5d2a7
NP
50 /* { dg-message "originally specified here" "" { target *-*-* } 19 } */
51@property (readwrite) int h; /* Ok */
8926bd5d 52@property (readonly) int i; /* { dg-warning ".getter. attribute of property .i. conflicts with previous declaration" } */
4ca5d2a7
NP
53 /* { dg-message "originally specified here" "" { target *-*-* } 21 } */
54@end
55
This page took 0.066087 seconds and 5 git commands to generate.