annotate clang/test/SemaObjC/newproperty-class-method-1.m @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -verify -fsyntax-only -Wno-objc-root-class %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 void abort(void);
anatofuz
parents:
diff changeset
4
anatofuz
parents:
diff changeset
5 @interface Subclass
anatofuz
parents:
diff changeset
6 + (int)magicNumber;
anatofuz
parents:
diff changeset
7 + (void)setMagicNumber:(int)value;
anatofuz
parents:
diff changeset
8 + (void)setFakeSetterNumber:(int)value;
anatofuz
parents:
diff changeset
9 @end
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 @implementation Subclass
anatofuz
parents:
diff changeset
12 int _magicNumber = 0;
anatofuz
parents:
diff changeset
13 + (int)magicNumber {
anatofuz
parents:
diff changeset
14 return _magicNumber;
anatofuz
parents:
diff changeset
15 }
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 + (void)setMagicNumber:(int)value {
anatofuz
parents:
diff changeset
18 _magicNumber = value;
anatofuz
parents:
diff changeset
19 }
anatofuz
parents:
diff changeset
20
anatofuz
parents:
diff changeset
21 + (void)setFakeSetterNumber:(int)value {
anatofuz
parents:
diff changeset
22 _magicNumber = value;
anatofuz
parents:
diff changeset
23 }
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 + (void) classMeth
anatofuz
parents:
diff changeset
26 {
anatofuz
parents:
diff changeset
27 self.magicNumber = 10;
anatofuz
parents:
diff changeset
28 if (self.magicNumber != 10)
anatofuz
parents:
diff changeset
29 abort ();
anatofuz
parents:
diff changeset
30 }
anatofuz
parents:
diff changeset
31 @end
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 int main (void) {
anatofuz
parents:
diff changeset
34
anatofuz
parents:
diff changeset
35 int a;
anatofuz
parents:
diff changeset
36 Subclass.magicNumber = 2 /*[Subclass setMagicNumber:2]*/;
anatofuz
parents:
diff changeset
37 if (Subclass.magicNumber != 0)
anatofuz
parents:
diff changeset
38 abort ();
anatofuz
parents:
diff changeset
39 if (Subclass.magicNumber != 2)
anatofuz
parents:
diff changeset
40 abort ();
anatofuz
parents:
diff changeset
41 Subclass.magicNumber += 3;
anatofuz
parents:
diff changeset
42 if (Subclass.magicNumber != 5)
anatofuz
parents:
diff changeset
43 abort ();
anatofuz
parents:
diff changeset
44 Subclass.magicNumber -= 5;
anatofuz
parents:
diff changeset
45 if (Subclass.magicNumber != 0)
anatofuz
parents:
diff changeset
46 abort ();
anatofuz
parents:
diff changeset
47 /* We only have a setter in the following case. */
anatofuz
parents:
diff changeset
48 Subclass.fakeSetterNumber = 123;
anatofuz
parents:
diff changeset
49
anatofuz
parents:
diff changeset
50 /* We read it using the other getter. */
anatofuz
parents:
diff changeset
51 if (Subclass.magicNumber != 123)
anatofuz
parents:
diff changeset
52 abort ();
anatofuz
parents:
diff changeset
53 Subclass.fakeSetterNumber = Subclass.magicNumber;
anatofuz
parents:
diff changeset
54 if (Subclass.magicNumber != 123)
anatofuz
parents:
diff changeset
55 abort ();
anatofuz
parents:
diff changeset
56
anatofuz
parents:
diff changeset
57 Subclass.fakeSetterNumberX = 123; // expected-error{{property 'fakeSetterNumberX' not found on object of type 'Subclass'}}
anatofuz
parents:
diff changeset
58
anatofuz
parents:
diff changeset
59 /* Test class methods using the new syntax. */
anatofuz
parents:
diff changeset
60 [Subclass classMeth];
anatofuz
parents:
diff changeset
61 return 0;
anatofuz
parents:
diff changeset
62 }