forked from OSchip/llvm-project
55 lines
1.3 KiB
Objective-C
55 lines
1.3 KiB
Objective-C
// RUN: %clang_cc1 -fobjc-runtime=macosx-10.8 -fsyntax-only -verify %s
|
|
|
|
__attribute__((objc_root_class))
|
|
@interface Root @end
|
|
|
|
// These should not get diagnosed immediately.
|
|
@interface A : Root {
|
|
__weak id x;
|
|
}
|
|
@property __weak id y;
|
|
@end
|
|
|
|
// Diagnostic goes on the ivar if it's explicit.
|
|
@interface B : Root {
|
|
__weak id x; // expected-error {{cannot create __weak reference in file using manual reference counting}}
|
|
}
|
|
@property __weak id x;
|
|
@end
|
|
@implementation B
|
|
@synthesize x;
|
|
@end
|
|
|
|
// Otherwise, it goes with the @synthesize.
|
|
@interface C : Root
|
|
@property __weak id x; // expected-note {{property declared here}}
|
|
@end
|
|
@implementation C
|
|
@synthesize x; // expected-error {{cannot synthesize weak property in file using manual reference counting}}
|
|
@end
|
|
|
|
@interface D : Root
|
|
@property __weak id x; // expected-note {{property declared here}}
|
|
@end
|
|
@implementation D // expected-error {{cannot synthesize weak property in file using manual reference counting}}
|
|
@end
|
|
|
|
@interface E : Root {
|
|
@public
|
|
__weak id x; // expected-note 2 {{declaration uses __weak, but ARC is disabled}}
|
|
}
|
|
@end
|
|
|
|
void testE(E *e) {
|
|
id x = e->x; // expected-error {{'x' is unavailable}}
|
|
e->x = x; // expected-error {{'x' is unavailable}}
|
|
}
|
|
|
|
@interface F : Root
|
|
@property (weak) id x;
|
|
@end
|
|
|
|
void testF(F *f) {
|
|
id x = f.x;
|
|
}
|