[InstCombine] Preserve NSW flags for `lshr (mul nuw X, C1), C2 -> mul nuw nsw X,...
[llvm-project.git] / clang / test / SemaObjC / class-property-access.m
blobdee85cb088513bef2f3e7e3714bbbc34102c1125
1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 // expected-no-diagnostics
4 @interface Test {}
5 + (Test*)one;
6 - (int)two;
7 @end
9 int main (void)
11   return Test.one.two;
14 __attribute__((objc_root_class))
15 @interface RootClass { 
16   Class isa; 
19 @property int property;
20 -(int)method;
21 - (void) setMethod : (int)arg;
22 +(int)classMethod;
23 @end
25 @interface Subclass : RootClass @end
26 void Test1(void) { 
27     // now okay
28     (void)RootClass.property;
29     (void)Subclass.property;
30     (void)RootClass.method;
31     (void)Subclass.method;
33     RootClass.property = 1;
34     Subclass.property = 2;
35     RootClass.method = 3;
36     Subclass.method = 4;
38     // okay
39     (void)RootClass.classMethod;
40     (void)Subclass.classMethod;
42     // also okay
43     (void)[RootClass property];
44     (void)[Subclass property];
45     [RootClass method];
46     [Subclass method];
47     [RootClass classMethod];
48     [Subclass classMethod];
50     // also okay
51     [RootClass setProperty : 1];
52     [Subclass setProperty : 2];
53     [RootClass setMethod : 3];
54     [Subclass setMethod : 4];