Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / SemaObjC / property-in-class-extension-1.m
blob19d27b331389c42f588112772453209a97ffcfc7
1 // RUN: %clang_cc1  -fsyntax-only -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fobjc-weak -verify -Wproperty-attribute-mismatch %s
2 // RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fobjc-weak -fsyntax-only -verify -Wproperty-attribute-mismatch %s
4 @class NSString;
6 @interface MyClass
8 @property (nonatomic, readonly) NSString* addingMemoryModel;
10 @property (nonatomic, copy, readonly) NSString* matchingMemoryModel;
12 @property (atomic, retain, readonly) NSString* addingNoNewMemoryModel;
14 @property (readonly) NSString* none;
15 @property (readonly) NSString* none1;
17 @property (assign, readonly) NSString* changeMemoryModel; // expected-note {{property declared here}}
19 @property (readonly) __weak id weak_prop;
20 @property (readonly) __weak id weak_prop1;
22 @property (assign, readonly) NSString* assignProperty;
24 @property (readonly) NSString* readonlyProp;
28 @end
30 @interface MyClass ()
32   NSString* _name;
35 @property (nonatomic, copy) NSString* addingMemoryModel;
36 @property (nonatomic, copy) NSString* matchingMemoryModel;
37 @property () NSString* addingNoNewMemoryModel;
38 @property () NSString* none;
39 @property (readwrite, retain) NSString* none1;
41 @property (retain) NSString* changeMemoryModel; // expected-warning {{property attribute in class extension does not match the primary class}}
42 @property () __weak id weak_prop;
43 @property (readwrite) __weak id weak_prop1;
45 @property (assign, readwrite) NSString* assignProperty;
46 @property (assign) NSString* readonlyProp;
47 @end
49 @interface radar12214070
50 @property (nonatomic, atomic, readonly) float propertyName; // expected-error {{property attributes 'atomic' and 'nonatomic' are mutually exclusive}}
51                                                             
52 @property (nonatomic, readonly) float propertyName2; // expected-note {{property declared here}}
53 @end
55 @interface radar12214070 ()
56 @property (atomic, nonatomic, readonly, readwrite) float propertyName; // expected-error {{property attributes 'readonly' and 'readwrite' are mutually exclusive}} \
57                 // expected-error {{property attributes 'atomic' and 'nonatomic' are mutually exclusive}}
59 @property (atomic, readwrite) float propertyName2; // expected-warning {{'atomic' attribute on property 'propertyName2' does not match the property inherited from 'radar12214070'}}
60 @end