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