brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 0e8c3fc Raw
54 lines · plain
1// RUN: %clang_cc1 -fsyntax-only -verify -disable-objc-default-synthesize-properties -Wno-objc-root-class %s2 3@interface Object4+ (id)new;5@end6 7@interface ReadOnly : Object8{9  int _object;10  int _Anotherobject;11}12@property(readonly) int object;13@property(readonly) int Anotherobject;14@end15 16@interface ReadOnly ()17@property(readwrite) int object;18@property(readwrite, setter = myAnotherobjectSetter:) int Anotherobject;19@end20 21@implementation ReadOnly22@synthesize object = _object;23@synthesize  Anotherobject = _Anotherobject;24- (void) myAnotherobjectSetter : (int)val {25    _Anotherobject = val;26}27- (int) Anotherobject { return _Anotherobject; }28@end29 30int main(int argc, char **argv) {31    ReadOnly *test = [ReadOnly new];32    test.object = 12345;33    test.Anotherobject = 200;34    return test.object - 12345 + test.Anotherobject - 200;35}36 37///38 39@interface I040@property(readonly) int p0;	// expected-note {{property declared here}}41@end 42 43@interface I0 (Cat0)44@end 45 46@interface I0 (Cat1)47@end 48  49@implementation I0	// expected-warning {{property 'p0' requires method 'p0' to be define}}50- (void) foo {51  self.p0 = 0; // expected-error {{assignment to readonly property}}52}53@end54