brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 0f32998 Raw
63 lines · plain
1// RUN: %clang_cc1 -verify -fsyntax-only -Wno-objc-root-class %s2 3void abort(void);4 5@interface Subclass6+ (int)magicNumber;7+ (void)setMagicNumber:(int)value;8+ (void)setFakeSetterNumber:(int)value;9@end10 11@implementation Subclass12int _magicNumber = 0;13+ (int)magicNumber {14  return _magicNumber;15}16 17+ (void)setMagicNumber:(int)value {18  _magicNumber = value;19}20 21+ (void)setFakeSetterNumber:(int)value {22  _magicNumber = value;23}24 25+ (void) classMeth26{27	self.magicNumber = 10;28	if (self.magicNumber != 10)29	  abort ();30}31@end32 33int main (void) {34  35  int a;36  Subclass.magicNumber = 2 /*[Subclass setMagicNumber:2]*/;37  if (Subclass.magicNumber != 0)38    abort ();39  if (Subclass.magicNumber != 2)40    abort ();41  Subclass.magicNumber += 3;42  if (Subclass.magicNumber != 5)43    abort ();44  Subclass.magicNumber -= 5;45  if (Subclass.magicNumber != 0)46    abort ();47  /* We only have a setter in the following case. */48  Subclass.fakeSetterNumber = 123;49 50  /* We read it using the other getter. */51  if (Subclass.magicNumber != 123)52   abort ();53  Subclass.fakeSetterNumber = Subclass.magicNumber;54  if (Subclass.magicNumber != 123)55   abort ();56 57  Subclass.fakeSetterNumberX = 123; // expected-error{{property 'fakeSetterNumberX' not found on object of type 'Subclass'}}58 59  /* Test class methods using the new syntax. */60  [Subclass classMeth];61  return 0;62}63