[InstCombine] Preserve NSW flags for `lshr (mul nuw X, C1), C2 -> mul nuw nsw X,...
[llvm-project.git] / clang / test / SemaObjC / no-ivar-access-control.m
blob434db4a9ce3be59b79b81e9db39ffeec838034cc
1 // RUN: %clang_cc1 -fsyntax-only -fdebugger-support -verify -Wno-objc-root-class %s
2 // RUN: %clang_cc1 -x objective-c++ -fdebugger-support -fsyntax-only -verify -Wno-objc-root-class %s
3 // expected-no-diagnostics
5 @interface I
7 @private
8 int ivar;
10 @end
12 @implementation I
13 - (int) meth {
14   return self->ivar;
16 int foo1(I* p) {
17   return p->ivar;
19 @end
21 int foo(I* p) {
22   return p->ivar;
25 @interface B 
26 @end
28 @implementation B 
29 - (int) meth : (I*) arg {
30   return arg->ivar;
32 @end
35 @interface I1 {
36  int protected_ivar;
38 @property int PROP_INMAIN;
39 @end
41 @interface I1() {
42  int private_ivar;
44 @property int PROP_INCLASSEXT;
45 @end
47 @implementation I1
48 @synthesize PROP_INMAIN, PROP_INCLASSEXT;
50 - (int) Meth {
51    PROP_INMAIN = 1;
52    PROP_INCLASSEXT = 2;
53    protected_ivar = 1;  // OK
54    return private_ivar; // OK
56 @end
59 @interface DER : I1
60 @end
62 @implementation DER
63 - (int) Meth {
64    protected_ivar = 1;  // OK
65    PROP_INMAIN = 1;
66    PROP_INCLASSEXT = 2; 
67    return private_ivar;
69 @end