| // RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -analyzer-checker=core,deadcode.DeadStores,osx.cocoa.RetainCount,unix.Malloc,unix.MismatchedDeallocator -analyzer-eagerly-assume -analyzer-config path-diagnostics-alternate=true -analyzer-output=plist -o %t -w %s |
| // RUN: FileCheck --input-file %t %s |
| |
| //===----------------------------------------------------------------------===// |
| // Forward declarations (from headers). |
| //===----------------------------------------------------------------------===// |
| |
| typedef const struct __CFNumber * CFNumberRef; |
| typedef const struct __CFAllocator * CFAllocatorRef; |
| extern const CFAllocatorRef kCFAllocatorDefault; |
| typedef signed long CFIndex; |
| enum { |
| kCFNumberSInt8Type = 1, |
| kCFNumberSInt16Type = 2, |
| kCFNumberSInt32Type = 3, |
| kCFNumberSInt64Type = 4, |
| kCFNumberFloat32Type = 5, |
| kCFNumberFloat64Type = 6, |
| kCFNumberCharType = 7, |
| kCFNumberShortType = 8, |
| kCFNumberIntType = 9, |
| kCFNumberLongType = 10, |
| kCFNumberLongLongType = 11, |
| kCFNumberFloatType = 12, |
| kCFNumberDoubleType = 13, |
| kCFNumberCFIndexType = 14, |
| kCFNumberNSIntegerType = 15, |
| kCFNumberCGFloatType = 16, |
| kCFNumberMaxType = 16 |
| }; |
| typedef CFIndex CFNumberType; |
| CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr); |
| |
| #define nil ((id)0) |
| |
| __attribute__((objc_root_class)) |
| @interface NSObject |
| + (instancetype) alloc; |
| - (instancetype) init; |
| - (instancetype)retain; |
| - (void)release; |
| @end |
| |
| @interface NSArray : NSObject |
| @end |
| |
| //===----------------------------------------------------------------------===// |
| // Basic tracking of null and tests for null. |
| //===----------------------------------------------------------------------===// |
| |
| void test_null_init(void) { |
| int *p = 0; |
| *p = 0xDEADBEEF; |
| } |
| |
| void test_null_assign(void) { |
| int *p; |
| p = 0; |
| *p = 0xDEADBEEF; |
| } |
| |
| void test_null_assign_transitive(void) { |
| int *p; |
| p = 0; |
| int *q = p; |
| *q = 0xDEADBEEF; |
| } |
| |
| void test_null_cond(int *p) { |
| if (!p) { |
| *p = 0xDEADBEEF; |
| } |
| } |
| |
| void test_null_cond_transitive(int *q) { |
| if (!q) { |
| int *p = q; |
| *p = 0xDEADBEEF; |
| } |
| } |
| |
| void test_null_field(void) { |
| struct s { int *p; } x; |
| x.p = 0; |
| *(x.p) = 0xDEADBEEF; |
| } |
| |
| void test_assumptions(int a, int b) |
| { |
| if (a == 0) { |
| return; |
| } |
| if (b != 0) { |
| return; |
| } |
| int *p = 0; |
| *p = 0xDEADBEEF; |
| } |
| |
| int *bar_cond_assign(); |
| int test_cond_assign() { |
| int *p; |
| if ((p = bar_cond_assign())) |
| return 1; |
| return *p; |
| } |
| |
| //===----------------------------------------------------------------------===// |
| // Diagnostics for leaks and "noreturn" paths. |
| //===----------------------------------------------------------------------===// |
| |
| |
| // <rdar://problem/8331641> leak reports should not show paths that end with exit() (but ones that don't end with exit()) |
| |
| void stop() __attribute__((noreturn)); |
| |
| void rdar8331641(int x) { |
| signed z = 1; |
| CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // expected-warning{{leak}} |
| if (x) |
| stop(); |
| (void) value; |
| } |
| |
| //===----------------------------------------------------------------------===// |
| // Test loops and control-flow. |
| //===----------------------------------------------------------------------===// |
| |
| void test_objc_fast_enumeration(NSArray *x) { |
| id obj; |
| for (obj in x) |
| *(volatile int *)0 = 0; |
| } |
| |
| void test_objc_fast_enumeration_2(id arr) { |
| int x; |
| for (id obj in arr) { |
| x = 1; |
| } |
| x += 1; |
| } |
| |
| // Test that loops are documented in the path. |
| void rdar12280665() { |
| for (unsigned i = 0; i < 2; ++i) { |
| if (i == 1) { |
| int *p = 0; |
| *p = 0xDEADBEEF; // expected-warning {{dereference}} |
| } |
| } |
| } |
| |
| // Test for a "loop executed 0 times" diagnostic. |
| int *radar12322528_bar(); |
| |
| void radar12322528_for(int x) { |
| int z; |
| int *p = 0; |
| for (unsigned i = 0; i < x; ++i) { |
| p = radar12322528_bar(); |
| } |
| *p = 0xDEADBEEF; |
| } |
| |
| void radar12322528_while(int x) { |
| int *p = 0; |
| unsigned i = 0; |
| for ( ; i < x ; ) { |
| ++i; |
| p = radar12322528_bar(); |
| } |
| *p = 0xDEADBEEF; |
| } |
| |
| void radar12322528_foo_2() { |
| int *p = 0; |
| for (unsigned i = 0; i < 2; ++i) { |
| if (i == 0) |
| continue; |
| |
| if (i == 1) { |
| |
| break; |
| } |
| } |
| *p = 0xDEADBEEF; |
| } |
| |
| void test_loop_diagnostics() { |
| int *p = 0; |
| for (int i = 0; i < 2; ++i) { p = 0; } |
| *p = 1; |
| } |
| |
| void test_loop_diagnostics_2() { |
| int *p = 0; |
| |
| for (int i = 0; i < 2; ) { |
| |
| ++i; |
| |
| p = 0; |
| |
| } |
| |
| *p = 1; |
| } |
| |
| void test_loop_diagnostics_3() { |
| int z; |
| int y; |
| int k; |
| int *p = 0; |
| int i = 0; |
| while (i < 2) { |
| ++i; |
| p = 0; |
| } |
| * p = 1; |
| } |
| |
| void test_do_while() { |
| unsigned i = 0; |
| |
| int *p; |
| |
| do { |
| |
| ++i; |
| p = 0; |
| |
| } while (i< 2); |
| |
| *p = 0xDEADBEEF; |
| } |
| |
| |
| void test_logical_and() { |
| int *p = 0; |
| if (1 && 2) { |
| *p = 0xDEADBEEF; |
| } |
| } |
| |
| void test_logical_or() { |
| int *p = 0; |
| if (0 || 2) { |
| *p = 0xDEADBEEF; |
| } |
| } |
| |
| void test_logical_or_call() { |
| extern int call(int); |
| int *p = 0; |
| if (call(0 || 2)) { |
| *p = 0xDEADBEEF; |
| } |
| } |
| |
| void test_nested_logicals(int coin) { |
| int *p = 0; |
| |
| if ((0 || 0) || coin) { |
| *p = 0xDEADBEEF; |
| } |
| |
| if (0 || (0 || !coin)) { |
| *p = 0xDEADBEEF; |
| } |
| } |
| |
| void test_deeply_nested_logicals() { |
| extern int call(int); |
| int *p = 0; |
| |
| if ((0 || (5 && 0)) ? 0 : ((0 || 4) ? call(1 && 5) : 0)) { |
| |
| *p = 0xDEADBEEF; |
| } |
| } |
| |
| void test_ternary(int x, int *y) { |
| int z = x ? 0 : 1; |
| |
| int *p = z ? y : 0; |
| |
| *p = 0xDEADBEEF; |
| } |
| |
| void testUseless(int *y) { |
| if (y) { |
| |
| } |
| if (y) { |
| |
| } |
| int *p = 0; |
| *p = 0xDEADBEEF; |
| } |
| |
| //===----------------------------------------------------------------------===// |
| // Interprocedural tests. |
| //===----------------------------------------------------------------------===// |
| |
| @interface IPA_Foo |
| - (int *) returnsPointer; |
| @end |
| |
| int testFoo(IPA_Foo *x) { |
| if (x) |
| return 1; |
| return *[x returnsPointer]; |
| } |
| |
| @interface IPA_X : NSObject |
| - (int *)getPointer; |
| @end |
| |
| void test1_IPA_X() { |
| IPA_X *x = nil; |
| *[x getPointer] = 1; // here |
| } |
| |
| |
| @interface IPA_Y : NSObject |
| - (IPA_Y *)opaque; |
| - (IPA_X *)getX; |
| @end |
| |
| @implementation IPA_Y |
| - (IPA_X *)getX { |
| return nil; |
| } |
| @end |
| |
| void test_IPA_Y(IPA_Y *y) { |
| if (y) |
| return; |
| |
| IPA_X *x = [[y opaque] getX]; // here |
| *[x getPointer] = 1; |
| } |
| |
| // From diagnostics/report-issues-within-main-file.cpp: |
| void causeDivByZeroInMain(int in) { |
| int m = 0; |
| m = in/m; |
| m++; |
| } |
| |
| void mainPlusMain() { |
| int i = 0; |
| i++; |
| causeDivByZeroInMain(i); |
| i++; |
| } |
| |
| // From inlining/path-notes.c: |
| int *getZero() { |
| int *p = 0; |
| return p; |
| } |
| |
| void usePointer(int *p) { |
| *p = 1; |
| } |
| |
| void testUseOfNullPointer() { |
| // Test the case where an argument expression is itself a call. |
| usePointer(getZero()); |
| } |
| |
| |
| //===----------------------------------------------------------------------===// |
| // Misc. tests. |
| //===----------------------------------------------------------------------===// |
| |
| // Test for tracking null state of ivars. |
| @interface RDar12114812 : NSObject { char *p; } |
| @end |
| @implementation RDar12114812 |
| - (void)test { |
| p = 0; |
| *p = 1; |
| } |
| @end |
| |
| // Test diagnostics for initialization of structs. |
| void RDar13295437_f(void *i) __attribute__((__nonnull__)); |
| struct RDar13295437_S { int *i; }; |
| int RDar13295437() { |
| struct RDar13295437_S s = {0}; |
| struct RDar13295437_S *sp = &s; |
| RDar13295437_f(sp->i); |
| return 0; |
| } |
| |
| |
| void testCast(int coin) { |
| if (coin) { |
| (void)(1+2); |
| (void)(2+3); |
| (void)(3+4); |
| *(volatile int *)0 = 1; |
| } |
| } |
| |
| // The following previously crashed when generating extensive diagnostics. |
| // <rdar://problem/10797980> |
| @interface RDar10797980_help |
| @property (readonly) int x; |
| @end |
| @interface RDar10797980 : NSObject { |
| RDar10797980_help *y; |
| } |
| - (void) test; |
| @end |
| @implementation RDar10797980 |
| - (void) test { |
| if (y.x == 1) { |
| int *p = 0; |
| *p = 0xDEADBEEF; // expected-warning {{deference}} |
| } |
| } |
| |
| // The original source for the above Radar contains another problem: |
| // if the end-of-path node is an implicit statement, it may not have a valid |
| // source location. <rdar://problem/12446776> |
| - (void)test2 { |
| if (bar_cond_assign()) { |
| id foo = [[RDar10797980 alloc] init]; // leak |
| } |
| (void)y; // first statement after the 'if' is an implicit 'self' DeclRefExpr |
| } |
| |
| @end |
| |
| void variousLoops(id input) { |
| extern int a(); |
| extern int b(); |
| extern int c(); |
| |
| extern int work(); |
| |
| while (a()) { |
| work(); |
| work(); |
| work(); |
| *(volatile int *)0 = 1; |
| } |
| |
| int first = 1; |
| do { |
| work(); |
| work(); |
| work(); |
| if (!first) |
| *(volatile int *)0 = 1; |
| first = 0; |
| } while (a()); |
| |
| for (int i = 0; i != b(); ++i) { |
| work(); |
| *(volatile int *)0 = 1; |
| } |
| |
| for (id x in input) { |
| work(); |
| work(); |
| work(); |
| (void)x; |
| *(volatile int *)0 = 1; |
| } |
| |
| int z[] = {1,2}; |
| for (int y : z) { |
| work(); |
| work(); |
| work(); |
| (void)y; |
| } |
| |
| int empty[] = {}; |
| for (int y : empty) { |
| work(); |
| work(); |
| work(); |
| (void)y; |
| } |
| |
| for (int i = 0; ; ++i) { |
| work(); |
| if (i == b()) |
| break; |
| } |
| |
| int i; |
| for (i = 0; i != b(); ++i) { |
| work(); |
| *(volatile int *)0 = 1; |
| } |
| |
| for (; i != b(); ++i) { |
| work(); |
| *(volatile int *)0 = 1; |
| } |
| |
| for (; i != b(); ) { |
| work(); |
| if (i == b()) |
| break; |
| *(volatile int *)0 = 1; |
| } |
| |
| for (;;) { |
| work(); |
| if (i == b()) |
| break; |
| } |
| |
| *(volatile int *)0 = 1; |
| } |
| |
| void *malloc(unsigned long); |
| void *realloc(void *, unsigned long); |
| void free(void *); |
| |
| void reallocDiagnostics() { |
| char * buf = (char*)malloc(100); |
| char * tmp; |
| tmp = (char*)realloc(buf, 0x1000000); |
| if (!tmp) { |
| return;// expected-warning {{leak}} |
| } |
| buf = tmp; |
| free(buf); |
| } |
| |
| template <typename T> |
| class unique_ptr { |
| T *ptr; |
| public: |
| explicit unique_ptr(T *p) : ptr(p) {} |
| ~unique_ptr() { delete ptr; } |
| }; |
| |
| void test() { |
| int i = 0; |
| ++i; |
| |
| unique_ptr<int> p(new int[4]); |
| { |
| ++i; |
| } |
| } |
| |
| void longLines() { |
| id foo = [[NSObject alloc] init]; // leak |
| id bar = |
| [foo retain]; |
| [bar release]; |
| id baz = [foo |
| retain]; |
| [baz release]; |
| // This next line is intentionally longer than 80 characters. |
| id garply = [foo retain]; |
| [garply release]; |
| } |
| |
| #define POINTER(T) T* |
| POINTER(void) testMacroInFunctionDecl(void *q) { |
| int *p = 0; |
| *p = 1; |
| return q; |
| } |
| |
| namespace rdar14960554 { |
| class Foo { |
| int a = 1; |
| int b = 2; |
| int c = 3; |
| |
| Foo() : |
| a(0), |
| c(3) { |
| // Check that we don't have an edge to the in-class initializer for 'b'. |
| if (b == 2) |
| *(volatile int *)0 = 1; |
| } |
| }; |
| } |
| |
| // CHECK: <key>diagnostics</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>52</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>52</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>52</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>52</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>52</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>53</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>53</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>53</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>53</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>53</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>53</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>53</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>53</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>53</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>category</key><string>Logic error</string> |
| // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>dc9c2a657ca759f9744cde2e093cfd59</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>test_null_init</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>53</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>57</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>57</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>58</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>58</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>58</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>58</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>58</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Null pointer value stored to 'p'</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Null pointer value stored to 'p'</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>58</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>58</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>59</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>59</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>59</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>59</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>59</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>59</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>59</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>59</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>59</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>category</key><string>Logic error</string> |
| // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>8f95d9681490a4e52c167969d0957b39</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>test_null_assign</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>59</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>63</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>63</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>64</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>64</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>64</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>64</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>64</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Null pointer value stored to 'p'</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Null pointer value stored to 'p'</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>64</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>64</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>65</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>65</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>65</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>65</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>65</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>'q' initialized to a null pointer value</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>'q' initialized to a null pointer value</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>65</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>65</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>66</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>66</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>66</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>66</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>66</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>66</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>66</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>66</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>66</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'q')</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'q')</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'q')</string> |
| // CHECK-NEXT: <key>category</key><string>Logic error</string> |
| // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>94c43fbcad6aaff4ee7433f2d2db0bbe</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>test_null_assign_transitive</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>66</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>70</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>70</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>70</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>70</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>70</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>70</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>70</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Assuming 'p' is null</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Assuming 'p' is null</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>70</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>70</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>71</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>71</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>71</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>71</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>71</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>71</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>71</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>71</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>71</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>category</key><string>Logic error</string> |
| // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>659f01507ffd7efd3ca3eab7179fd7d2</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>test_null_cond</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>71</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>76</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>76</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>76</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>76</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>76</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>76</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>76</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Assuming 'q' is null</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Assuming 'q' is null</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>76</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>76</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>77</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>77</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>77</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>77</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>77</integer> |
| // CHECK-NEXT: <key>col</key><integer>10</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>77</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>77</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>78</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>78</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>78</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>78</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>78</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>78</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>78</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>78</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>78</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>category</key><string>Logic error</string> |
| // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>c90d51e62139e614b57aff7021240a82</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>test_null_cond_transitive</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>78</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>83</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>83</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>84</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>84</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>84</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>84</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>84</integer> |
| // CHECK-NEXT: <key>col</key><integer>9</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Null pointer value stored to 'x.p'</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Null pointer value stored to 'x.p'</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>84</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>84</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>85</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>85</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>85</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>85</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>85</integer> |
| // CHECK-NEXT: <key>col</key><integer>10</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>85</integer> |
| // CHECK-NEXT: <key>col</key><integer>10</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>85</integer> |
| // CHECK-NEXT: <key>col</key><integer>10</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>85</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>85</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from field 'p')</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from field 'p')</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from field 'p')</string> |
| // CHECK-NEXT: <key>category</key><string>Logic error</string> |
| // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>245408d2bc416e324064d990e6dd82a8</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>test_null_field</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>85</integer> |
| // CHECK-NEXT: <key>col</key><integer>10</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>90</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>90</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>90</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>90</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>90</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>90</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>90</integer> |
| // CHECK-NEXT: <key>col</key><integer>12</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Assuming 'a' is not equal to 0</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Assuming 'a' is not equal to 0</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>90</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>90</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>93</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>93</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>93</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>93</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>93</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>93</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>93</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>93</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>93</integer> |
| // CHECK-NEXT: <key>col</key><integer>12</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Assuming 'b' is equal to 0</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Assuming 'b' is equal to 0</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>93</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>93</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>96</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>96</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>96</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>96</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>96</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>96</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>96</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>97</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>97</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>97</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>97</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>97</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>97</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>97</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>97</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>97</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>category</key><string>Logic error</string> |
| // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>b12acffa40177b55b695aa2292533410</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>test_assumptions</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>8</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>97</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>102</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>102</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>28</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Value assigned to 'p'</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Value assigned to 'p'</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Assuming 'p' is null</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Assuming 'p' is null</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>29</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Assuming pointer value is null</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Assuming pointer value is null</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>103</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>105</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>105</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>105</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>105</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>105</integer> |
| // CHECK-NEXT: <key>col</key><integer>10</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>105</integer> |
| // CHECK-NEXT: <key>col</key><integer>10</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>105</integer> |
| // CHECK-NEXT: <key>col</key><integer>10</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>105</integer> |
| // CHECK-NEXT: <key>col</key><integer>11</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>105</integer> |
| // CHECK-NEXT: <key>col</key><integer>11</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>category</key><string>Logic error</string> |
| // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>c0a32b8291b0fc7230f847f05f415625</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>test_cond_assign</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>105</integer> |
| // CHECK-NEXT: <key>col</key><integer>10</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>118</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>118</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>119</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>119</integer> |
| // CHECK-NEXT: <key>col</key><integer>13</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>119</integer> |
| // CHECK-NEXT: <key>col</key><integer>23</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>119</integer> |
| // CHECK-NEXT: <key>col</key><integer>23</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>119</integer> |
| // CHECK-NEXT: <key>col</key><integer>82</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type CFNumberRef with a +1 retain count</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Call to function 'CFNumberCreate' returns a Core Foundation object of type CFNumberRef with a +1 retain count</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>119</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>119</integer> |
| // CHECK-NEXT: <key>col</key><integer>13</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>120</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>120</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>120</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>120</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>120</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>120</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>120</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>120</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>120</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Assuming 'x' is 0</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Assuming 'x' is 0</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>120</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>120</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>122</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>122</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>122</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>122</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>123</integer> |
| // CHECK-NEXT: <key>col</key><integer>1</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>123</integer> |
| // CHECK-NEXT: <key>col</key><integer>1</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>123</integer> |
| // CHECK-NEXT: <key>col</key><integer>1</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Potential leak of an object stored into 'value'</string> |
| // CHECK-NEXT: <key>category</key><string>Memory (Core Foundation/Objective-C)</string> |
| // CHECK-NEXT: <key>type</key><string>Leak</string> |
| // CHECK-NEXT: <key>check_name</key><string>osx.cocoa.RetainCount</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>29a10ca4af622b6146ca082e49d919d6</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>rdar8331641</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>123</integer> |
| // CHECK-NEXT: <key>col</key><integer>1</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>130</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>130</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>131</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>131</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>131</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>131</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>131</integer> |
| // CHECK-NEXT: <key>col</key><integer>10</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Entering loop body</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Entering loop body</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>131</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>131</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>132</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>132</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>132</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>132</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>132</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>132</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>132</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>132</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>132</integer> |
| // CHECK-NEXT: <key>col</key><integer>26</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>category</key><string>Logic error</string> |
| // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>ed7251f5b34b8380abd60cddfd3db46b</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>test_objc_fast_enumeration</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>132</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Value stored to 'x' is never read</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Value stored to 'x' is never read</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Value stored to 'x' is never read</string> |
| // CHECK-NEXT: <key>category</key><string>Dead store</string> |
| // CHECK-NEXT: <key>type</key><string>Dead increment</string> |
| // CHECK-NEXT: <key>check_name</key><string>deadcode.DeadStores</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>dd09640bb87b201c2adcf5ef37bfcfaa</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>test_objc_fast_enumeration_2</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>5</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>136</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>136</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>136</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>'x' declared without an initial value</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>'x' declared without an initial value</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>136</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>136</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>137</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>137</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>137</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>137</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>137</integer> |
| // CHECK-NEXT: <key>col</key><integer>13</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Loop body skipped when collection is empty</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Loop body skipped when collection is empty</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>137</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>137</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string> |
| // CHECK-NEXT: <key>category</key><string>Logic error</string> |
| // CHECK-NEXT: <key>type</key><string>Assigned value is garbage or undefined</string> |
| // CHECK-NEXT: <key>check_name</key><string>core.uninitialized.Assign</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>025372576cd3ba6716044f93a51c978c</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>test_objc_fast_enumeration_2</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>5</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>140</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>28</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Entering loop body</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Entering loop body</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>150</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>150</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>150</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>150</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Looping back to the head of the loop</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Looping back to the head of the loop</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>28</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Entering loop body</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Entering loop body</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>145</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>4</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>146</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>147</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>147</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>147</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>147</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>147</integer> |
| // CHECK-NEXT: <key>col</key><integer>10</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>147</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>147</integer> |
| // CHECK-NEXT: <key>col</key><integer>7</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>148</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>148</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>148</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>148</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>148</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>148</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>148</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>148</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>148</integer> |
| // CHECK-NEXT: <key>col</key><integer>6</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string> |
| // CHECK-NEXT: <key>category</key><string>Logic error</string> |
| // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> |
| // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> |
| // CHECK-NEXT: <!-- This hash is experimental and going to change! --> |
| // CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>08f9a01186cb2f1b78b08ec20260f1c1</string> |
| // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> |
| // CHECK-NEXT: <key>issue_context</key><string>rdar12280665</string> |
| // CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>148</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>path</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>157</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>157</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>158</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>158</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>158</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>158</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>158</integer> |
| // CHECK-NEXT: <key>col</key><integer>8</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>158</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>158</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>5</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>28</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Assuming 'i' is >= 'x'</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Assuming 'i' is >= 'x'</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>event</string> |
| // CHECK-NEXT: <key>location</key> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <key>ranges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>28</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>depth</key><integer>0</integer> |
| // CHECK-NEXT: <key>extended_message</key> |
| // CHECK-NEXT: <string>Loop body executed 0 times</string> |
| // CHECK-NEXT: <key>message</key> |
| // CHECK-NEXT: <string>Loop body executed 0 times</string> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>kind</key><string>control</string> |
| // CHECK-NEXT: <key>edges</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>start</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>159</integer> |
| // CHECK-NEXT: <key>col</key><integer>24</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: </array> |
| // CHECK-NEXT: <key>end</key> |
| // CHECK-NEXT: <array> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>162</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
| // CHECK-NEXT: <dict> |
| // CHECK-NEXT: <key>line</key><integer>162</integer> |
| // CHECK-NEXT: <key>col</key><integer>3</integer> |
| // CHECK-NEXT: <key>file</key><integer>0</integer> |
| // CHECK-NEXT: </dict> |
|