[InstCombine] Preserve NSW flags for `lshr (mul nuw X, C1), C2 -> mul nuw nsw X,...
[llvm-project.git] / clang / test / SemaObjC / property-typecheck-1.m
blob85e8d4624be1d9171d4b026d6f5ac4e738baa31b
1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
3 @interface A
4 -(float) x;     // expected-note {{declared here}}
5 @property int x; // expected-warning {{type of property 'x' does not match type of accessor 'x'}}
6 @end
8 @interface A (Cat)
9 @property int moo;      // expected-note {{previous definition is here}}
10 @end
12 @implementation A (Cat)
13 -(int) moo {
14   return 0;
16 -(void) setMoo: (float) x { // expected-warning {{conflicting parameter types in implementation of 'setMoo:': 'int' vs 'float'}}
18 @end
21 typedef int T[2];
22 typedef void (F)(void);
24 @interface C
25 @property(assign) T p2;  // expected-error {{property cannot have array or function type 'T'}}
27 @property(assign) F f2; // expected-error {{property cannot have array or function type 'F'}}
29 @end
32 @class SSyncSet;
34 @interface SPeer
35   @property(nonatomic,readonly,retain) SSyncSet* syncSet;
36 @end
38 @class SSyncSet_iDisk;
40 @interface SPeer_iDisk_remote1 : SPeer
41 - (SSyncSet_iDisk*) syncSet; // expected-note {{declared here}}
42 @end
44 @interface SPeer_iDisk_local
45 - (SSyncSet_iDisk*) syncSet;
46 @end
48 @interface SSyncSet
49 @end
51 @interface SSyncSet_iDisk
52 @property(nonatomic,readonly,retain) SPeer_iDisk_local* localPeer;
53 @end
55 @interface SPeer_iDisk_remote1 (protected)
56 @end
58 @implementation SPeer_iDisk_remote1 (protected)
59 - (id) preferredSource1
61   return self.syncSet.localPeer; // expected-warning {{type of property 'syncSet' does not match type of accessor 'syncSet'}}
63 @end
65 @interface NSArray @end
67 @interface NSMutableArray : NSArray
68 @end
70 @interface Class1 
72  NSMutableArray* pieces;
73  NSArray* first;
76 @property (readonly) NSArray* pieces; // expected-warning {{type of property 'pieces' does not match type of accessor 'pieces'}}
77 @property (readonly) NSMutableArray* first;
79 - (NSMutableArray*) pieces; // expected-note 2 {{declared here}}
80 - (NSArray*) first;
82 // Don't warn about setter-like methods for readonly properties.
83 - (void)setFirst:(char)val;
84 - (void)setPieces:(char)val;
86 @end
88 @interface Class2  {
89  Class1* container;
92 @end
94 @implementation Class2
96 - (id) lastPiece
98  return container.pieces; // expected-warning {{type of property 'pieces' does not match type of accessor 'pieces'}}
101 - (id)firstPiece
103   return container.first;
105 @end