xref: /aosp_15_r20/external/clang/test/Analysis/null-deref-path-notes.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -analyzer-output=text -fblocks -verify -Wno-objc-root-class %s
2*67e74705SXin Li// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -analyzer-output=plist-multi-file -analyzer-config path-diagnostics-alternate=false -fblocks -Wno-objc-root-class %s -o %t
3*67e74705SXin Li// RUN: FileCheck --input-file=%t %s
4*67e74705SXin Li
5*67e74705SXin Li@interface Root {
6*67e74705SXin Li@public
7*67e74705SXin Li  int uniqueID;
8*67e74705SXin Li}
9*67e74705SXin Li- (id)initWithID:(int)newID;
10*67e74705SXin Li- (void)refreshID;
11*67e74705SXin Li@end
12*67e74705SXin Li
13*67e74705SXin Liint testNull(Root *obj) {
14*67e74705SXin Li  if (obj) return 0;
15*67e74705SXin Li  // expected-note@-1 {{Assuming 'obj' is nil}}
16*67e74705SXin Li  // expected-note@-2 {{Taking false branch}}
17*67e74705SXin Li
18*67e74705SXin Li  int *x = &obj->uniqueID; // expected-note{{'x' initialized to a null pointer value}}
19*67e74705SXin Li  return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}} expected-note{{Dereference of null pointer (loaded from variable 'x')}}
20*67e74705SXin Li}
21*67e74705SXin Li
22*67e74705SXin Li
23*67e74705SXin Li@interface Subclass : Root
24*67e74705SXin Li@end
25*67e74705SXin Li
26*67e74705SXin Li@implementation Subclass
27*67e74705SXin Li- (id)initWithID:(int)newID {
28*67e74705SXin Li  self = [super initWithID:newID]; // expected-note{{Value assigned to 'self'}}
29*67e74705SXin Li  if (self) return self;
30*67e74705SXin Li  // expected-note@-1 {{Assuming 'self' is nil}}
31*67e74705SXin Li  // expected-note@-2 {{Taking false branch}}
32*67e74705SXin Li
33*67e74705SXin Li  uniqueID = newID; // expected-warning{{Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self')}} expected-note{{Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self')}}
34*67e74705SXin Li  return self;
35*67e74705SXin Li}
36*67e74705SXin Li
37*67e74705SXin Li@end
38*67e74705SXin Li
39*67e74705SXin Livoid repeatedStores(int coin) {
40*67e74705SXin Li  int *p = 0;
41*67e74705SXin Li  if (coin) {
42*67e74705SXin Li    // expected-note@-1 {{Assuming 'coin' is 0}}
43*67e74705SXin Li    // expected-note@-2 {{Taking false branch}}
44*67e74705SXin Li    extern int *getPointer();
45*67e74705SXin Li    p = getPointer();
46*67e74705SXin Li  } else {
47*67e74705SXin Li    p = 0; // expected-note {{Null pointer value stored to 'p'}}
48*67e74705SXin Li  }
49*67e74705SXin Li
50*67e74705SXin Li  *p = 1; // expected-warning{{Dereference of null pointer}} expected-note{{Dereference of null pointer}}
51*67e74705SXin Li}
52*67e74705SXin Li
53*67e74705SXin Li
54*67e74705SXin Li// CHECK:  <key>diagnostics</key>
55*67e74705SXin Li// CHECK-NEXT:  <array>
56*67e74705SXin Li// CHECK-NEXT:   <dict>
57*67e74705SXin Li// CHECK-NEXT:    <key>path</key>
58*67e74705SXin Li// CHECK-NEXT:    <array>
59*67e74705SXin Li// CHECK-NEXT:     <dict>
60*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
61*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
62*67e74705SXin Li// CHECK-NEXT:       <array>
63*67e74705SXin Li// CHECK-NEXT:        <dict>
64*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
65*67e74705SXin Li// CHECK-NEXT:          <array>
66*67e74705SXin Li// CHECK-NEXT:           <dict>
67*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>14</integer>
68*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
69*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
70*67e74705SXin Li// CHECK-NEXT:           </dict>
71*67e74705SXin Li// CHECK-NEXT:           <dict>
72*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>14</integer>
73*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>4</integer>
74*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
75*67e74705SXin Li// CHECK-NEXT:           </dict>
76*67e74705SXin Li// CHECK-NEXT:          </array>
77*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
78*67e74705SXin Li// CHECK-NEXT:          <array>
79*67e74705SXin Li// CHECK-NEXT:           <dict>
80*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>14</integer>
81*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>7</integer>
82*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
83*67e74705SXin Li// CHECK-NEXT:           </dict>
84*67e74705SXin Li// CHECK-NEXT:           <dict>
85*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>14</integer>
86*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>9</integer>
87*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
88*67e74705SXin Li// CHECK-NEXT:           </dict>
89*67e74705SXin Li// CHECK-NEXT:          </array>
90*67e74705SXin Li// CHECK-NEXT:        </dict>
91*67e74705SXin Li// CHECK-NEXT:       </array>
92*67e74705SXin Li// CHECK-NEXT:     </dict>
93*67e74705SXin Li// CHECK-NEXT:     <dict>
94*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>event</string>
95*67e74705SXin Li// CHECK-NEXT:      <key>location</key>
96*67e74705SXin Li// CHECK-NEXT:      <dict>
97*67e74705SXin Li// CHECK-NEXT:       <key>line</key><integer>14</integer>
98*67e74705SXin Li// CHECK-NEXT:       <key>col</key><integer>7</integer>
99*67e74705SXin Li// CHECK-NEXT:       <key>file</key><integer>0</integer>
100*67e74705SXin Li// CHECK-NEXT:      </dict>
101*67e74705SXin Li// CHECK-NEXT:      <key>ranges</key>
102*67e74705SXin Li// CHECK-NEXT:      <array>
103*67e74705SXin Li// CHECK-NEXT:        <array>
104*67e74705SXin Li// CHECK-NEXT:         <dict>
105*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>14</integer>
106*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>7</integer>
107*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
108*67e74705SXin Li// CHECK-NEXT:         </dict>
109*67e74705SXin Li// CHECK-NEXT:         <dict>
110*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>14</integer>
111*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>9</integer>
112*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
113*67e74705SXin Li// CHECK-NEXT:         </dict>
114*67e74705SXin Li// CHECK-NEXT:        </array>
115*67e74705SXin Li// CHECK-NEXT:      </array>
116*67e74705SXin Li// CHECK-NEXT:      <key>depth</key><integer>0</integer>
117*67e74705SXin Li// CHECK-NEXT:      <key>extended_message</key>
118*67e74705SXin Li// CHECK-NEXT:      <string>Assuming &apos;obj&apos; is nil</string>
119*67e74705SXin Li// CHECK-NEXT:      <key>message</key>
120*67e74705SXin Li// CHECK-NEXT:      <string>Assuming &apos;obj&apos; is nil</string>
121*67e74705SXin Li// CHECK-NEXT:     </dict>
122*67e74705SXin Li// CHECK-NEXT:     <dict>
123*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
124*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
125*67e74705SXin Li// CHECK-NEXT:       <array>
126*67e74705SXin Li// CHECK-NEXT:        <dict>
127*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
128*67e74705SXin Li// CHECK-NEXT:          <array>
129*67e74705SXin Li// CHECK-NEXT:           <dict>
130*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>14</integer>
131*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>7</integer>
132*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
133*67e74705SXin Li// CHECK-NEXT:           </dict>
134*67e74705SXin Li// CHECK-NEXT:           <dict>
135*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>14</integer>
136*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>9</integer>
137*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
138*67e74705SXin Li// CHECK-NEXT:           </dict>
139*67e74705SXin Li// CHECK-NEXT:          </array>
140*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
141*67e74705SXin Li// CHECK-NEXT:          <array>
142*67e74705SXin Li// CHECK-NEXT:           <dict>
143*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>18</integer>
144*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
145*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
146*67e74705SXin Li// CHECK-NEXT:           </dict>
147*67e74705SXin Li// CHECK-NEXT:           <dict>
148*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>18</integer>
149*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>5</integer>
150*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
151*67e74705SXin Li// CHECK-NEXT:           </dict>
152*67e74705SXin Li// CHECK-NEXT:          </array>
153*67e74705SXin Li// CHECK-NEXT:        </dict>
154*67e74705SXin Li// CHECK-NEXT:       </array>
155*67e74705SXin Li// CHECK-NEXT:     </dict>
156*67e74705SXin Li// CHECK-NEXT:     <dict>
157*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>event</string>
158*67e74705SXin Li// CHECK-NEXT:      <key>location</key>
159*67e74705SXin Li// CHECK-NEXT:      <dict>
160*67e74705SXin Li// CHECK-NEXT:       <key>line</key><integer>18</integer>
161*67e74705SXin Li// CHECK-NEXT:       <key>col</key><integer>3</integer>
162*67e74705SXin Li// CHECK-NEXT:       <key>file</key><integer>0</integer>
163*67e74705SXin Li// CHECK-NEXT:      </dict>
164*67e74705SXin Li// CHECK-NEXT:      <key>ranges</key>
165*67e74705SXin Li// CHECK-NEXT:      <array>
166*67e74705SXin Li// CHECK-NEXT:        <array>
167*67e74705SXin Li// CHECK-NEXT:         <dict>
168*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>18</integer>
169*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>3</integer>
170*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
171*67e74705SXin Li// CHECK-NEXT:         </dict>
172*67e74705SXin Li// CHECK-NEXT:         <dict>
173*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>18</integer>
174*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>8</integer>
175*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
176*67e74705SXin Li// CHECK-NEXT:         </dict>
177*67e74705SXin Li// CHECK-NEXT:        </array>
178*67e74705SXin Li// CHECK-NEXT:      </array>
179*67e74705SXin Li// CHECK-NEXT:      <key>depth</key><integer>0</integer>
180*67e74705SXin Li// CHECK-NEXT:      <key>extended_message</key>
181*67e74705SXin Li// CHECK-NEXT:      <string>&apos;x&apos; initialized to a null pointer value</string>
182*67e74705SXin Li// CHECK-NEXT:      <key>message</key>
183*67e74705SXin Li// CHECK-NEXT:      <string>&apos;x&apos; initialized to a null pointer value</string>
184*67e74705SXin Li// CHECK-NEXT:     </dict>
185*67e74705SXin Li// CHECK-NEXT:     <dict>
186*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
187*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
188*67e74705SXin Li// CHECK-NEXT:       <array>
189*67e74705SXin Li// CHECK-NEXT:        <dict>
190*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
191*67e74705SXin Li// CHECK-NEXT:          <array>
192*67e74705SXin Li// CHECK-NEXT:           <dict>
193*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>18</integer>
194*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
195*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
196*67e74705SXin Li// CHECK-NEXT:           </dict>
197*67e74705SXin Li// CHECK-NEXT:           <dict>
198*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>18</integer>
199*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>5</integer>
200*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
201*67e74705SXin Li// CHECK-NEXT:           </dict>
202*67e74705SXin Li// CHECK-NEXT:          </array>
203*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
204*67e74705SXin Li// CHECK-NEXT:          <array>
205*67e74705SXin Li// CHECK-NEXT:           <dict>
206*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>19</integer>
207*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
208*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
209*67e74705SXin Li// CHECK-NEXT:           </dict>
210*67e74705SXin Li// CHECK-NEXT:           <dict>
211*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>19</integer>
212*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>8</integer>
213*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
214*67e74705SXin Li// CHECK-NEXT:           </dict>
215*67e74705SXin Li// CHECK-NEXT:          </array>
216*67e74705SXin Li// CHECK-NEXT:        </dict>
217*67e74705SXin Li// CHECK-NEXT:       </array>
218*67e74705SXin Li// CHECK-NEXT:     </dict>
219*67e74705SXin Li// CHECK-NEXT:     <dict>
220*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
221*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
222*67e74705SXin Li// CHECK-NEXT:       <array>
223*67e74705SXin Li// CHECK-NEXT:        <dict>
224*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
225*67e74705SXin Li// CHECK-NEXT:          <array>
226*67e74705SXin Li// CHECK-NEXT:           <dict>
227*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>19</integer>
228*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
229*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
230*67e74705SXin Li// CHECK-NEXT:           </dict>
231*67e74705SXin Li// CHECK-NEXT:           <dict>
232*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>19</integer>
233*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>8</integer>
234*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
235*67e74705SXin Li// CHECK-NEXT:           </dict>
236*67e74705SXin Li// CHECK-NEXT:          </array>
237*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
238*67e74705SXin Li// CHECK-NEXT:          <array>
239*67e74705SXin Li// CHECK-NEXT:           <dict>
240*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>19</integer>
241*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>10</integer>
242*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
243*67e74705SXin Li// CHECK-NEXT:           </dict>
244*67e74705SXin Li// CHECK-NEXT:           <dict>
245*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>19</integer>
246*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>10</integer>
247*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
248*67e74705SXin Li// CHECK-NEXT:           </dict>
249*67e74705SXin Li// CHECK-NEXT:          </array>
250*67e74705SXin Li// CHECK-NEXT:        </dict>
251*67e74705SXin Li// CHECK-NEXT:       </array>
252*67e74705SXin Li// CHECK-NEXT:     </dict>
253*67e74705SXin Li// CHECK-NEXT:     <dict>
254*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>event</string>
255*67e74705SXin Li// CHECK-NEXT:      <key>location</key>
256*67e74705SXin Li// CHECK-NEXT:      <dict>
257*67e74705SXin Li// CHECK-NEXT:       <key>line</key><integer>19</integer>
258*67e74705SXin Li// CHECK-NEXT:       <key>col</key><integer>10</integer>
259*67e74705SXin Li// CHECK-NEXT:       <key>file</key><integer>0</integer>
260*67e74705SXin Li// CHECK-NEXT:      </dict>
261*67e74705SXin Li// CHECK-NEXT:      <key>ranges</key>
262*67e74705SXin Li// CHECK-NEXT:      <array>
263*67e74705SXin Li// CHECK-NEXT:        <array>
264*67e74705SXin Li// CHECK-NEXT:         <dict>
265*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>19</integer>
266*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>11</integer>
267*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
268*67e74705SXin Li// CHECK-NEXT:         </dict>
269*67e74705SXin Li// CHECK-NEXT:         <dict>
270*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>19</integer>
271*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>11</integer>
272*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
273*67e74705SXin Li// CHECK-NEXT:         </dict>
274*67e74705SXin Li// CHECK-NEXT:        </array>
275*67e74705SXin Li// CHECK-NEXT:      </array>
276*67e74705SXin Li// CHECK-NEXT:      <key>depth</key><integer>0</integer>
277*67e74705SXin Li// CHECK-NEXT:      <key>extended_message</key>
278*67e74705SXin Li// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
279*67e74705SXin Li// CHECK-NEXT:      <key>message</key>
280*67e74705SXin Li// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
281*67e74705SXin Li// CHECK-NEXT:     </dict>
282*67e74705SXin Li// CHECK-NEXT:    </array>
283*67e74705SXin Li// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable &apos;x&apos;)</string>
284*67e74705SXin Li// CHECK-NEXT:    <key>category</key><string>Logic error</string>
285*67e74705SXin Li// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
286*67e74705SXin Li// CHECK-NEXT:    <key>check_name</key><string>core.NullDereference</string>
287*67e74705SXin Li// CHECK-NEXT:    <!-- This hash is experimental and going to change! -->
288*67e74705SXin Li// CHECK-NEXT:    <key>issue_hash_content_of_line_in_context</key><string>3ff6dd9f2084f4a0dac8c3688c02fd0f</string>
289*67e74705SXin Li// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
290*67e74705SXin Li// CHECK-NEXT:   <key>issue_context</key><string>testNull</string>
291*67e74705SXin Li// CHECK-NEXT:   <key>issue_hash_function_offset</key><string>6</string>
292*67e74705SXin Li// CHECK-NEXT:   <key>location</key>
293*67e74705SXin Li// CHECK-NEXT:   <dict>
294*67e74705SXin Li// CHECK-NEXT:    <key>line</key><integer>19</integer>
295*67e74705SXin Li// CHECK-NEXT:    <key>col</key><integer>10</integer>
296*67e74705SXin Li// CHECK-NEXT:    <key>file</key><integer>0</integer>
297*67e74705SXin Li// CHECK-NEXT:   </dict>
298*67e74705SXin Li// CHECK-NEXT:   </dict>
299*67e74705SXin Li// CHECK-NEXT:   <dict>
300*67e74705SXin Li// CHECK-NEXT:    <key>path</key>
301*67e74705SXin Li// CHECK-NEXT:    <array>
302*67e74705SXin Li// CHECK-NEXT:     <dict>
303*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>event</string>
304*67e74705SXin Li// CHECK-NEXT:      <key>location</key>
305*67e74705SXin Li// CHECK-NEXT:      <dict>
306*67e74705SXin Li// CHECK-NEXT:       <key>line</key><integer>28</integer>
307*67e74705SXin Li// CHECK-NEXT:       <key>col</key><integer>3</integer>
308*67e74705SXin Li// CHECK-NEXT:       <key>file</key><integer>0</integer>
309*67e74705SXin Li// CHECK-NEXT:      </dict>
310*67e74705SXin Li// CHECK-NEXT:      <key>ranges</key>
311*67e74705SXin Li// CHECK-NEXT:      <array>
312*67e74705SXin Li// CHECK-NEXT:        <array>
313*67e74705SXin Li// CHECK-NEXT:         <dict>
314*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>28</integer>
315*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>3</integer>
316*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
317*67e74705SXin Li// CHECK-NEXT:         </dict>
318*67e74705SXin Li// CHECK-NEXT:         <dict>
319*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>28</integer>
320*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>33</integer>
321*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
322*67e74705SXin Li// CHECK-NEXT:         </dict>
323*67e74705SXin Li// CHECK-NEXT:        </array>
324*67e74705SXin Li// CHECK-NEXT:      </array>
325*67e74705SXin Li// CHECK-NEXT:      <key>depth</key><integer>0</integer>
326*67e74705SXin Li// CHECK-NEXT:      <key>extended_message</key>
327*67e74705SXin Li// CHECK-NEXT:      <string>Value assigned to &apos;self&apos;</string>
328*67e74705SXin Li// CHECK-NEXT:      <key>message</key>
329*67e74705SXin Li// CHECK-NEXT:      <string>Value assigned to &apos;self&apos;</string>
330*67e74705SXin Li// CHECK-NEXT:     </dict>
331*67e74705SXin Li// CHECK-NEXT:     <dict>
332*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
333*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
334*67e74705SXin Li// CHECK-NEXT:       <array>
335*67e74705SXin Li// CHECK-NEXT:        <dict>
336*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
337*67e74705SXin Li// CHECK-NEXT:          <array>
338*67e74705SXin Li// CHECK-NEXT:           <dict>
339*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>28</integer>
340*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
341*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
342*67e74705SXin Li// CHECK-NEXT:           </dict>
343*67e74705SXin Li// CHECK-NEXT:           <dict>
344*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>28</integer>
345*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>6</integer>
346*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
347*67e74705SXin Li// CHECK-NEXT:           </dict>
348*67e74705SXin Li// CHECK-NEXT:          </array>
349*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
350*67e74705SXin Li// CHECK-NEXT:          <array>
351*67e74705SXin Li// CHECK-NEXT:           <dict>
352*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>29</integer>
353*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
354*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
355*67e74705SXin Li// CHECK-NEXT:           </dict>
356*67e74705SXin Li// CHECK-NEXT:           <dict>
357*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>29</integer>
358*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>4</integer>
359*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
360*67e74705SXin Li// CHECK-NEXT:           </dict>
361*67e74705SXin Li// CHECK-NEXT:          </array>
362*67e74705SXin Li// CHECK-NEXT:        </dict>
363*67e74705SXin Li// CHECK-NEXT:       </array>
364*67e74705SXin Li// CHECK-NEXT:     </dict>
365*67e74705SXin Li// CHECK-NEXT:     <dict>
366*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
367*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
368*67e74705SXin Li// CHECK-NEXT:       <array>
369*67e74705SXin Li// CHECK-NEXT:        <dict>
370*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
371*67e74705SXin Li// CHECK-NEXT:          <array>
372*67e74705SXin Li// CHECK-NEXT:           <dict>
373*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>29</integer>
374*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
375*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
376*67e74705SXin Li// CHECK-NEXT:           </dict>
377*67e74705SXin Li// CHECK-NEXT:           <dict>
378*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>29</integer>
379*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>4</integer>
380*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
381*67e74705SXin Li// CHECK-NEXT:           </dict>
382*67e74705SXin Li// CHECK-NEXT:          </array>
383*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
384*67e74705SXin Li// CHECK-NEXT:          <array>
385*67e74705SXin Li// CHECK-NEXT:           <dict>
386*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>29</integer>
387*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>7</integer>
388*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
389*67e74705SXin Li// CHECK-NEXT:           </dict>
390*67e74705SXin Li// CHECK-NEXT:           <dict>
391*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>29</integer>
392*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>10</integer>
393*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
394*67e74705SXin Li// CHECK-NEXT:           </dict>
395*67e74705SXin Li// CHECK-NEXT:          </array>
396*67e74705SXin Li// CHECK-NEXT:        </dict>
397*67e74705SXin Li// CHECK-NEXT:       </array>
398*67e74705SXin Li// CHECK-NEXT:     </dict>
399*67e74705SXin Li// CHECK-NEXT:     <dict>
400*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>event</string>
401*67e74705SXin Li// CHECK-NEXT:      <key>location</key>
402*67e74705SXin Li// CHECK-NEXT:      <dict>
403*67e74705SXin Li// CHECK-NEXT:       <key>line</key><integer>29</integer>
404*67e74705SXin Li// CHECK-NEXT:       <key>col</key><integer>7</integer>
405*67e74705SXin Li// CHECK-NEXT:       <key>file</key><integer>0</integer>
406*67e74705SXin Li// CHECK-NEXT:      </dict>
407*67e74705SXin Li// CHECK-NEXT:      <key>ranges</key>
408*67e74705SXin Li// CHECK-NEXT:      <array>
409*67e74705SXin Li// CHECK-NEXT:        <array>
410*67e74705SXin Li// CHECK-NEXT:         <dict>
411*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>29</integer>
412*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>7</integer>
413*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
414*67e74705SXin Li// CHECK-NEXT:         </dict>
415*67e74705SXin Li// CHECK-NEXT:         <dict>
416*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>29</integer>
417*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>10</integer>
418*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
419*67e74705SXin Li// CHECK-NEXT:         </dict>
420*67e74705SXin Li// CHECK-NEXT:        </array>
421*67e74705SXin Li// CHECK-NEXT:      </array>
422*67e74705SXin Li// CHECK-NEXT:      <key>depth</key><integer>0</integer>
423*67e74705SXin Li// CHECK-NEXT:      <key>extended_message</key>
424*67e74705SXin Li// CHECK-NEXT:      <string>Assuming &apos;self&apos; is nil</string>
425*67e74705SXin Li// CHECK-NEXT:      <key>message</key>
426*67e74705SXin Li// CHECK-NEXT:      <string>Assuming &apos;self&apos; is nil</string>
427*67e74705SXin Li// CHECK-NEXT:     </dict>
428*67e74705SXin Li// CHECK-NEXT:     <dict>
429*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
430*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
431*67e74705SXin Li// CHECK-NEXT:       <array>
432*67e74705SXin Li// CHECK-NEXT:        <dict>
433*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
434*67e74705SXin Li// CHECK-NEXT:          <array>
435*67e74705SXin Li// CHECK-NEXT:           <dict>
436*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>29</integer>
437*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>7</integer>
438*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
439*67e74705SXin Li// CHECK-NEXT:           </dict>
440*67e74705SXin Li// CHECK-NEXT:           <dict>
441*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>29</integer>
442*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>10</integer>
443*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
444*67e74705SXin Li// CHECK-NEXT:           </dict>
445*67e74705SXin Li// CHECK-NEXT:          </array>
446*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
447*67e74705SXin Li// CHECK-NEXT:          <array>
448*67e74705SXin Li// CHECK-NEXT:           <dict>
449*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>33</integer>
450*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
451*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
452*67e74705SXin Li// CHECK-NEXT:           </dict>
453*67e74705SXin Li// CHECK-NEXT:           <dict>
454*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>33</integer>
455*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>10</integer>
456*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
457*67e74705SXin Li// CHECK-NEXT:           </dict>
458*67e74705SXin Li// CHECK-NEXT:          </array>
459*67e74705SXin Li// CHECK-NEXT:        </dict>
460*67e74705SXin Li// CHECK-NEXT:       </array>
461*67e74705SXin Li// CHECK-NEXT:     </dict>
462*67e74705SXin Li// CHECK-NEXT:     <dict>
463*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
464*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
465*67e74705SXin Li// CHECK-NEXT:       <array>
466*67e74705SXin Li// CHECK-NEXT:        <dict>
467*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
468*67e74705SXin Li// CHECK-NEXT:          <array>
469*67e74705SXin Li// CHECK-NEXT:           <dict>
470*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>33</integer>
471*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
472*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
473*67e74705SXin Li// CHECK-NEXT:           </dict>
474*67e74705SXin Li// CHECK-NEXT:           <dict>
475*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>33</integer>
476*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>10</integer>
477*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
478*67e74705SXin Li// CHECK-NEXT:           </dict>
479*67e74705SXin Li// CHECK-NEXT:          </array>
480*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
481*67e74705SXin Li// CHECK-NEXT:          <array>
482*67e74705SXin Li// CHECK-NEXT:           <dict>
483*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>33</integer>
484*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>12</integer>
485*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
486*67e74705SXin Li// CHECK-NEXT:           </dict>
487*67e74705SXin Li// CHECK-NEXT:           <dict>
488*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>33</integer>
489*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>12</integer>
490*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
491*67e74705SXin Li// CHECK-NEXT:           </dict>
492*67e74705SXin Li// CHECK-NEXT:          </array>
493*67e74705SXin Li// CHECK-NEXT:        </dict>
494*67e74705SXin Li// CHECK-NEXT:       </array>
495*67e74705SXin Li// CHECK-NEXT:     </dict>
496*67e74705SXin Li// CHECK-NEXT:     <dict>
497*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>event</string>
498*67e74705SXin Li// CHECK-NEXT:      <key>location</key>
499*67e74705SXin Li// CHECK-NEXT:      <dict>
500*67e74705SXin Li// CHECK-NEXT:       <key>line</key><integer>33</integer>
501*67e74705SXin Li// CHECK-NEXT:       <key>col</key><integer>12</integer>
502*67e74705SXin Li// CHECK-NEXT:       <key>file</key><integer>0</integer>
503*67e74705SXin Li// CHECK-NEXT:      </dict>
504*67e74705SXin Li// CHECK-NEXT:      <key>depth</key><integer>0</integer>
505*67e74705SXin Li// CHECK-NEXT:      <key>extended_message</key>
506*67e74705SXin Li// CHECK-NEXT:      <string>Access to instance variable &apos;uniqueID&apos; results in a dereference of a null pointer (loaded from variable &apos;self&apos;)</string>
507*67e74705SXin Li// CHECK-NEXT:      <key>message</key>
508*67e74705SXin Li// CHECK-NEXT:      <string>Access to instance variable &apos;uniqueID&apos; results in a dereference of a null pointer (loaded from variable &apos;self&apos;)</string>
509*67e74705SXin Li// CHECK-NEXT:     </dict>
510*67e74705SXin Li// CHECK-NEXT:    </array>
511*67e74705SXin Li// CHECK-NEXT:    <key>description</key><string>Access to instance variable &apos;uniqueID&apos; results in a dereference of a null pointer (loaded from variable &apos;self&apos;)</string>
512*67e74705SXin Li// CHECK-NEXT:    <key>category</key><string>Logic error</string>
513*67e74705SXin Li// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
514*67e74705SXin Li// CHECK-NEXT:    <key>check_name</key><string>core.NullDereference</string>
515*67e74705SXin Li// CHECK-NEXT:    <!-- This hash is experimental and going to change! -->
516*67e74705SXin Li// CHECK-NEXT:    <key>issue_hash_content_of_line_in_context</key><string>208c1267ca2da821fcc1b9183e1d624b</string>
517*67e74705SXin Li// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
518*67e74705SXin Li// CHECK-NEXT:   <key>issue_context</key><string>initWithID:</string>
519*67e74705SXin Li// CHECK-NEXT:   <key>issue_hash_function_offset</key><string>6</string>
520*67e74705SXin Li// CHECK-NEXT:   <key>location</key>
521*67e74705SXin Li// CHECK-NEXT:   <dict>
522*67e74705SXin Li// CHECK-NEXT:    <key>line</key><integer>33</integer>
523*67e74705SXin Li// CHECK-NEXT:    <key>col</key><integer>12</integer>
524*67e74705SXin Li// CHECK-NEXT:    <key>file</key><integer>0</integer>
525*67e74705SXin Li// CHECK-NEXT:   </dict>
526*67e74705SXin Li// CHECK-NEXT:   </dict>
527*67e74705SXin Li// CHECK-NEXT:   <dict>
528*67e74705SXin Li// CHECK-NEXT:    <key>path</key>
529*67e74705SXin Li// CHECK-NEXT:    <array>
530*67e74705SXin Li// CHECK-NEXT:     <dict>
531*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
532*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
533*67e74705SXin Li// CHECK-NEXT:       <array>
534*67e74705SXin Li// CHECK-NEXT:        <dict>
535*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
536*67e74705SXin Li// CHECK-NEXT:          <array>
537*67e74705SXin Li// CHECK-NEXT:           <dict>
538*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>40</integer>
539*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
540*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
541*67e74705SXin Li// CHECK-NEXT:           </dict>
542*67e74705SXin Li// CHECK-NEXT:           <dict>
543*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>40</integer>
544*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>5</integer>
545*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
546*67e74705SXin Li// CHECK-NEXT:           </dict>
547*67e74705SXin Li// CHECK-NEXT:          </array>
548*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
549*67e74705SXin Li// CHECK-NEXT:          <array>
550*67e74705SXin Li// CHECK-NEXT:           <dict>
551*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>41</integer>
552*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
553*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
554*67e74705SXin Li// CHECK-NEXT:           </dict>
555*67e74705SXin Li// CHECK-NEXT:           <dict>
556*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>41</integer>
557*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>4</integer>
558*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
559*67e74705SXin Li// CHECK-NEXT:           </dict>
560*67e74705SXin Li// CHECK-NEXT:          </array>
561*67e74705SXin Li// CHECK-NEXT:        </dict>
562*67e74705SXin Li// CHECK-NEXT:       </array>
563*67e74705SXin Li// CHECK-NEXT:     </dict>
564*67e74705SXin Li// CHECK-NEXT:     <dict>
565*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
566*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
567*67e74705SXin Li// CHECK-NEXT:       <array>
568*67e74705SXin Li// CHECK-NEXT:        <dict>
569*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
570*67e74705SXin Li// CHECK-NEXT:          <array>
571*67e74705SXin Li// CHECK-NEXT:           <dict>
572*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>41</integer>
573*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
574*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
575*67e74705SXin Li// CHECK-NEXT:           </dict>
576*67e74705SXin Li// CHECK-NEXT:           <dict>
577*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>41</integer>
578*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>4</integer>
579*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
580*67e74705SXin Li// CHECK-NEXT:           </dict>
581*67e74705SXin Li// CHECK-NEXT:          </array>
582*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
583*67e74705SXin Li// CHECK-NEXT:          <array>
584*67e74705SXin Li// CHECK-NEXT:           <dict>
585*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>41</integer>
586*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>7</integer>
587*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
588*67e74705SXin Li// CHECK-NEXT:           </dict>
589*67e74705SXin Li// CHECK-NEXT:           <dict>
590*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>41</integer>
591*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>10</integer>
592*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
593*67e74705SXin Li// CHECK-NEXT:           </dict>
594*67e74705SXin Li// CHECK-NEXT:          </array>
595*67e74705SXin Li// CHECK-NEXT:        </dict>
596*67e74705SXin Li// CHECK-NEXT:       </array>
597*67e74705SXin Li// CHECK-NEXT:     </dict>
598*67e74705SXin Li// CHECK-NEXT:     <dict>
599*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>event</string>
600*67e74705SXin Li// CHECK-NEXT:      <key>location</key>
601*67e74705SXin Li// CHECK-NEXT:      <dict>
602*67e74705SXin Li// CHECK-NEXT:       <key>line</key><integer>41</integer>
603*67e74705SXin Li// CHECK-NEXT:       <key>col</key><integer>7</integer>
604*67e74705SXin Li// CHECK-NEXT:       <key>file</key><integer>0</integer>
605*67e74705SXin Li// CHECK-NEXT:      </dict>
606*67e74705SXin Li// CHECK-NEXT:      <key>ranges</key>
607*67e74705SXin Li// CHECK-NEXT:      <array>
608*67e74705SXin Li// CHECK-NEXT:        <array>
609*67e74705SXin Li// CHECK-NEXT:         <dict>
610*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>41</integer>
611*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>7</integer>
612*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
613*67e74705SXin Li// CHECK-NEXT:         </dict>
614*67e74705SXin Li// CHECK-NEXT:         <dict>
615*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>41</integer>
616*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>10</integer>
617*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
618*67e74705SXin Li// CHECK-NEXT:         </dict>
619*67e74705SXin Li// CHECK-NEXT:        </array>
620*67e74705SXin Li// CHECK-NEXT:      </array>
621*67e74705SXin Li// CHECK-NEXT:      <key>depth</key><integer>0</integer>
622*67e74705SXin Li// CHECK-NEXT:      <key>extended_message</key>
623*67e74705SXin Li// CHECK-NEXT:      <string>Assuming &apos;coin&apos; is 0</string>
624*67e74705SXin Li// CHECK-NEXT:      <key>message</key>
625*67e74705SXin Li// CHECK-NEXT:      <string>Assuming &apos;coin&apos; is 0</string>
626*67e74705SXin Li// CHECK-NEXT:     </dict>
627*67e74705SXin Li// CHECK-NEXT:     <dict>
628*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
629*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
630*67e74705SXin Li// CHECK-NEXT:       <array>
631*67e74705SXin Li// CHECK-NEXT:        <dict>
632*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
633*67e74705SXin Li// CHECK-NEXT:          <array>
634*67e74705SXin Li// CHECK-NEXT:           <dict>
635*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>41</integer>
636*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>7</integer>
637*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
638*67e74705SXin Li// CHECK-NEXT:           </dict>
639*67e74705SXin Li// CHECK-NEXT:           <dict>
640*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>41</integer>
641*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>10</integer>
642*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
643*67e74705SXin Li// CHECK-NEXT:           </dict>
644*67e74705SXin Li// CHECK-NEXT:          </array>
645*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
646*67e74705SXin Li// CHECK-NEXT:          <array>
647*67e74705SXin Li// CHECK-NEXT:           <dict>
648*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>47</integer>
649*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>5</integer>
650*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
651*67e74705SXin Li// CHECK-NEXT:           </dict>
652*67e74705SXin Li// CHECK-NEXT:           <dict>
653*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>47</integer>
654*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>5</integer>
655*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
656*67e74705SXin Li// CHECK-NEXT:           </dict>
657*67e74705SXin Li// CHECK-NEXT:          </array>
658*67e74705SXin Li// CHECK-NEXT:        </dict>
659*67e74705SXin Li// CHECK-NEXT:       </array>
660*67e74705SXin Li// CHECK-NEXT:     </dict>
661*67e74705SXin Li// CHECK-NEXT:     <dict>
662*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>event</string>
663*67e74705SXin Li// CHECK-NEXT:      <key>location</key>
664*67e74705SXin Li// CHECK-NEXT:      <dict>
665*67e74705SXin Li// CHECK-NEXT:       <key>line</key><integer>47</integer>
666*67e74705SXin Li// CHECK-NEXT:       <key>col</key><integer>5</integer>
667*67e74705SXin Li// CHECK-NEXT:       <key>file</key><integer>0</integer>
668*67e74705SXin Li// CHECK-NEXT:      </dict>
669*67e74705SXin Li// CHECK-NEXT:      <key>ranges</key>
670*67e74705SXin Li// CHECK-NEXT:      <array>
671*67e74705SXin Li// CHECK-NEXT:        <array>
672*67e74705SXin Li// CHECK-NEXT:         <dict>
673*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>47</integer>
674*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>5</integer>
675*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
676*67e74705SXin Li// CHECK-NEXT:         </dict>
677*67e74705SXin Li// CHECK-NEXT:         <dict>
678*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>47</integer>
679*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>9</integer>
680*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
681*67e74705SXin Li// CHECK-NEXT:         </dict>
682*67e74705SXin Li// CHECK-NEXT:        </array>
683*67e74705SXin Li// CHECK-NEXT:      </array>
684*67e74705SXin Li// CHECK-NEXT:      <key>depth</key><integer>0</integer>
685*67e74705SXin Li// CHECK-NEXT:      <key>extended_message</key>
686*67e74705SXin Li// CHECK-NEXT:      <string>Null pointer value stored to &apos;p&apos;</string>
687*67e74705SXin Li// CHECK-NEXT:      <key>message</key>
688*67e74705SXin Li// CHECK-NEXT:      <string>Null pointer value stored to &apos;p&apos;</string>
689*67e74705SXin Li// CHECK-NEXT:     </dict>
690*67e74705SXin Li// CHECK-NEXT:     <dict>
691*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
692*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
693*67e74705SXin Li// CHECK-NEXT:       <array>
694*67e74705SXin Li// CHECK-NEXT:        <dict>
695*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
696*67e74705SXin Li// CHECK-NEXT:          <array>
697*67e74705SXin Li// CHECK-NEXT:           <dict>
698*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>47</integer>
699*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>5</integer>
700*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
701*67e74705SXin Li// CHECK-NEXT:           </dict>
702*67e74705SXin Li// CHECK-NEXT:           <dict>
703*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>47</integer>
704*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>5</integer>
705*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
706*67e74705SXin Li// CHECK-NEXT:           </dict>
707*67e74705SXin Li// CHECK-NEXT:          </array>
708*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
709*67e74705SXin Li// CHECK-NEXT:          <array>
710*67e74705SXin Li// CHECK-NEXT:           <dict>
711*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>50</integer>
712*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
713*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
714*67e74705SXin Li// CHECK-NEXT:           </dict>
715*67e74705SXin Li// CHECK-NEXT:           <dict>
716*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>50</integer>
717*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
718*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
719*67e74705SXin Li// CHECK-NEXT:           </dict>
720*67e74705SXin Li// CHECK-NEXT:          </array>
721*67e74705SXin Li// CHECK-NEXT:        </dict>
722*67e74705SXin Li// CHECK-NEXT:       </array>
723*67e74705SXin Li// CHECK-NEXT:     </dict>
724*67e74705SXin Li// CHECK-NEXT:     <dict>
725*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>control</string>
726*67e74705SXin Li// CHECK-NEXT:      <key>edges</key>
727*67e74705SXin Li// CHECK-NEXT:       <array>
728*67e74705SXin Li// CHECK-NEXT:        <dict>
729*67e74705SXin Li// CHECK-NEXT:         <key>start</key>
730*67e74705SXin Li// CHECK-NEXT:          <array>
731*67e74705SXin Li// CHECK-NEXT:           <dict>
732*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>50</integer>
733*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
734*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
735*67e74705SXin Li// CHECK-NEXT:           </dict>
736*67e74705SXin Li// CHECK-NEXT:           <dict>
737*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>50</integer>
738*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>3</integer>
739*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
740*67e74705SXin Li// CHECK-NEXT:           </dict>
741*67e74705SXin Li// CHECK-NEXT:          </array>
742*67e74705SXin Li// CHECK-NEXT:         <key>end</key>
743*67e74705SXin Li// CHECK-NEXT:          <array>
744*67e74705SXin Li// CHECK-NEXT:           <dict>
745*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>50</integer>
746*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>6</integer>
747*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
748*67e74705SXin Li// CHECK-NEXT:           </dict>
749*67e74705SXin Li// CHECK-NEXT:           <dict>
750*67e74705SXin Li// CHECK-NEXT:            <key>line</key><integer>50</integer>
751*67e74705SXin Li// CHECK-NEXT:            <key>col</key><integer>6</integer>
752*67e74705SXin Li// CHECK-NEXT:            <key>file</key><integer>0</integer>
753*67e74705SXin Li// CHECK-NEXT:           </dict>
754*67e74705SXin Li// CHECK-NEXT:          </array>
755*67e74705SXin Li// CHECK-NEXT:        </dict>
756*67e74705SXin Li// CHECK-NEXT:       </array>
757*67e74705SXin Li// CHECK-NEXT:     </dict>
758*67e74705SXin Li// CHECK-NEXT:     <dict>
759*67e74705SXin Li// CHECK-NEXT:      <key>kind</key><string>event</string>
760*67e74705SXin Li// CHECK-NEXT:      <key>location</key>
761*67e74705SXin Li// CHECK-NEXT:      <dict>
762*67e74705SXin Li// CHECK-NEXT:       <key>line</key><integer>50</integer>
763*67e74705SXin Li// CHECK-NEXT:       <key>col</key><integer>6</integer>
764*67e74705SXin Li// CHECK-NEXT:       <key>file</key><integer>0</integer>
765*67e74705SXin Li// CHECK-NEXT:      </dict>
766*67e74705SXin Li// CHECK-NEXT:      <key>ranges</key>
767*67e74705SXin Li// CHECK-NEXT:      <array>
768*67e74705SXin Li// CHECK-NEXT:        <array>
769*67e74705SXin Li// CHECK-NEXT:         <dict>
770*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>50</integer>
771*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>4</integer>
772*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
773*67e74705SXin Li// CHECK-NEXT:         </dict>
774*67e74705SXin Li// CHECK-NEXT:         <dict>
775*67e74705SXin Li// CHECK-NEXT:          <key>line</key><integer>50</integer>
776*67e74705SXin Li// CHECK-NEXT:          <key>col</key><integer>4</integer>
777*67e74705SXin Li// CHECK-NEXT:          <key>file</key><integer>0</integer>
778*67e74705SXin Li// CHECK-NEXT:         </dict>
779*67e74705SXin Li// CHECK-NEXT:        </array>
780*67e74705SXin Li// CHECK-NEXT:      </array>
781*67e74705SXin Li// CHECK-NEXT:      <key>depth</key><integer>0</integer>
782*67e74705SXin Li// CHECK-NEXT:      <key>extended_message</key>
783*67e74705SXin Li// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
784*67e74705SXin Li// CHECK-NEXT:      <key>message</key>
785*67e74705SXin Li// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
786*67e74705SXin Li// CHECK-NEXT:     </dict>
787*67e74705SXin Li// CHECK-NEXT:    </array>
788*67e74705SXin Li// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable &apos;p&apos;)</string>
789*67e74705SXin Li// CHECK-NEXT:    <key>category</key><string>Logic error</string>
790*67e74705SXin Li// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
791*67e74705SXin Li// CHECK-NEXT:    <key>check_name</key><string>core.NullDereference</string>
792*67e74705SXin Li// CHECK-NEXT:    <!-- This hash is experimental and going to change! -->
793*67e74705SXin Li// CHECK-NEXT:    <key>issue_hash_content_of_line_in_context</key><string>9e1f67627fbbfb46b4e3a618246e6b0a</string>
794*67e74705SXin Li// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
795*67e74705SXin Li// CHECK-NEXT:   <key>issue_context</key><string>repeatedStores</string>
796*67e74705SXin Li// CHECK-NEXT:   <key>issue_hash_function_offset</key><string>11</string>
797*67e74705SXin Li// CHECK-NEXT:   <key>location</key>
798*67e74705SXin Li// CHECK-NEXT:   <dict>
799*67e74705SXin Li// CHECK-NEXT:    <key>line</key><integer>50</integer>
800*67e74705SXin Li// CHECK-NEXT:    <key>col</key><integer>6</integer>
801*67e74705SXin Li// CHECK-NEXT:    <key>file</key><integer>0</integer>
802*67e74705SXin Li// CHECK-NEXT:   </dict>
803*67e74705SXin Li// CHECK-NEXT:   </dict>
804*67e74705SXin Li// CHECK-NEXT:  </array>
805