summaryrefslogtreecommitdiff
path: root/gcc/testsuite/objc.dg/property/at-property-17.m
blob: efb62d6f70d98198d3c3c88321c9697875d36956 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010.  */
/* { dg-do compile } */

#include <objc/objc.h>

/* Test that if you have a property declared in a class, with
   getters/setters in the superclass, there are no warnings.  */

@interface MyRootClass
{
  Class isa;
  int myCount;
  int myCount2;
  int myCount3;
}
- (int)count;
- (void)setCount: (int)number;
- (int)count2;
- (void)setCount2: (int)number;
- (int)count3;
@end

@implementation MyRootClass
- (int) count
{
  return myCount;
}
- (void) setCount: (int)number
{
  myCount = number;
}
- (int) count2
{
  return myCount2;
}
- (void) setCount2: (int)number
{
  myCount2 = number;
}
- (int) count3
{
  return myCount3;
}
@end



/* Try with a subclass.  */
@interface MyClass : MyRootClass
@property int count;
@end

@implementation MyClass
@end /* No warnings.  */



/* Try with a category.  */
@interface MyRootClass (count)
@property int count;
@end

@implementation MyRootClass (count)
@end /* No warnings.  */



/* Try with a category of a subclass.  */
@interface MyClass2 : MyClass
@end

@implementation MyClass2
@end

@interface MyClass2 (count2)
@property int count2;
@end

@implementation MyClass2 (count2)
@end /* No warnings.  */



/* Now, try with a category of a subclass, but with a missing setter,
   which should generate a warning.  */
@interface MyClass3 : MyClass
@end

@implementation MyClass3
@end

@interface MyClass3 (count3)
@property int count3;
@end

@implementation MyClass3 (count3)
@end /* { dg-warning "incomplete implementation" } */
/* { dg-warning "method definition for .-setCount3:. not found" "" { target *-*-* } 97 } */